Каков наилучший способ узнать, какое свойство имеет KeyAttribute в предоставленной модели (классе)?
KeyAttribute
Я пробовал с DataAnnotationsModelMetadataProvider; но ModelMetadata не содержит информации о KeyAttribute.
DataAnnotationsModelMetadataProvider
ModelMetadata
Для класса модели с именем MyModel свойства с ключевыми атрибутами можно найти следующим образом.
MyModel
var keyAttributedProps = typeof(MyModel).GetProperties() .Where(p => p.GetCustomAttributes(typeof(KeyAttribute), true).Length == 1);
Никогда не пытался, но я думаю, что вы можете использовать метод TypeDescriptor.GetProperties, чтобы получить свойство dessiredСогласно MSDN, он возвращает коллекцию свойств для указанного компонента, используя указанный массив атрибутов в качестве фильтра.
Проверьте эту ссылку.Надеюсь, это поможет: http://msdn.microsoft.com/en-us/library/3x9x2kh5.aspx#Y0