В нашем приложении мы используем 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, проверки работают должным образом, но с помощью отражения мы не можем найти атрибуты проверки и/или пользовательские атрибуты, примененные к свойству.
Любая помощь или указание спасут душу.