W naszej aplikacji używamy generatora jednostek EF4.0 i POCO do generowania jednostek z bazy danych. Aby zastosować adnotację danych, tworzymy interfejsy i implementujemy te interfejsy w klasach częściowych, które stworzyliśmy, aby pasowały do klasy cząstkowej generowanej przy użyciu EF.Uzyskaj niestandardowe atrybuty zastosowane do wygenerowanych obiektów za pomocą atrybutu 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
{
}
Teraz, przy użyciu odbicia, gdy staramy się uzyskać, jeśli „SomeCustomAttribute” nakłada się na „SomeEntity.SomeProperty”, zwraca, że atrybut nie jest stosowana.
Jeśli edytujemy wygenerowany kod i stosujemy atrybut bezpośrednio, to działa.
Jeśli sprawdzimy, czy częściowe klasy łączą się w jeden typ, to tak.
Jeśli sprawdzimy atrybut MetadataType, który zostanie zastosowany dla typu (za pomocą odbicia), to jest.
Ponadto, gdy jednostka jest związana z dowolnym elementem interfejsu użytkownika WPF, sprawdzania poprawności działają tak, jak powinny, ale za pomocą refleksji nie możemy znaleźć atrybutów sprawdzania poprawności i/lub atrybutów niestandardowych zastosowanych do właściwości.
Każda pomoc lub wskazówki uratują duszę.
sprawdzenie tego to, ja już odpowiedział na to pytanie tutaj http://stackoverflow.com/a/24757520/3050647 – elia07