Получение пользовательских атрибутов, применяемых к сгенерированным объектам через атрибут MetadataType

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

Любая помощь или указание спасут душу.

6
задан Dipin Behl 20 June 2012 в 07:40
поделиться