在我們的應用程序中,我們使用EF4.0和POCO實體生成器從數據庫生成實體。爲了應用數據註解,我們創建接口並在我們創建的部分類上實現這些接口,以匹配使用EF生成的部分類。通過MetadataType屬性獲取應用於生成實體的自定義屬性
/*Entity Generated Type*/
public partial class SomeEntity : EntityBase
{
public virtual string SomeProperty
{
get {...}
set {...}
}
}
/*Interface containing metadata*/
public interface ISomeEntityMetadata
{
[SomeCustomAttribute]
string SomeProperty { get; set; }
}
/*Partial matching class for interface*/
[MetadataType(typeof(ISomeEntityMetadata))]
public partial class SomeEntity : ISomeEntityMetadata
{
}
現在,使用反射,當我們試圖如果「SomeCustomAttribute」是在「SomeEntity.SomeProperty」適用於獲得,它返回不應用屬性。
如果我們編輯生成的代碼並直接應用Attribute,它就可以工作。
如果我們檢查部分類合併形成一個單一的類型,它會。
如果我們檢查要應用於類型的MetadataType屬性(使用反射),它是。另外,當實體綁定到任何WPF的UI-Element時,驗證將按照他們應該的方式工作,但使用反射我們無法找到應用於屬性的驗證屬性和/或自定義屬性。
任何幫助或指針都會拯救靈魂。
檢查了這一點,我已經在這裏回答了這個問題 http://stackoverflow.com/a/24757520/3050647 – elia07