Я пытаюсь использовать рефлексию, чтобы проверить, имеют ли свойства в данном классе установленный атрибут ReadOnly. Я использую классы MVC View Models (для метаданных используется частичный «приятельский» класс.
public partial class AccountViewModel
{
public virtual Int32 ID { get; set; }
public virtual decimal Balance { get; set; }
}
[MetadataType(typeof(AccountViewModelMetaData))]
public partial class AccountViewModel
{
class AccountViewModelMetaData
{
[DisplayName("ID")]
public virtual Int32 ID { get; set; }
[DisplayName("Balance")]
[DataType(DataType.Currency)]
[ReadOnly(true)]
public virtual decimal Balance { get; set; }
}
}
Я хочу проверить, есть ли у «Balance» свойство ReadOnly. Если я установлю атрибут ReadOnly в свойстве Balance AccountViewModel, я смогу получить его следующим образом:
Type t = typeof(AccountViewModel);
PropertyInfo pi = t.GetProperty("Balance");
bool isReadOnly = ReadOnlyAttribute.IsDefined(pi,typeof( ReadOnlyAttribute);
Я не могу получить информацию об атрибуте, если он находится в классе метаданных. Как я могу проверить, существует ли атрибут? У меня есть классы метаданных, определенные для всех моих моделей представлений, и мне нужен общий способ проверки атрибутов в классах метаданных.
Есть предложения?