В нашем приложении мы используем EF4.0 и генератор сущностей POCO для создания сущностей из базы данных. Чтобы применить аннотацию к данным, мы создаем интерфейсы и реализуем эти интерфейсы в частичных классах, которые мы создали, чтобы соответствовать частичному классу, сгенерированному с помощью EF.
/*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, он возвращает, что атрибут не применен.
Если мы редактируем сгенерированный код и применяем атрибут напрямую, он работает.
Если мы проверяем, объединяются ли частичные классы для формирования единого типа, то да.
Если мы проверим, применяется ли атрибут MetadataType к типа (с использованием отражения), это так.
Кроме того, когда объект привязан к любому элементу пользовательского интерфейса WPF, проверки работают так, как должны, но с помощью отражения мы не можем найти атрибуты проверки и / или настраиваемые атрибуты, примененные к недвижимость.
Любая помощь или указатели спасут душу.