Я пытаюсь использовать отражение, чтобы проверить, имеют ли свойства в данном классе атрибут ReadOnly. Классы, которые я использую, - это модели MVC View (с использованием частичного "приятеля" для метаданных.
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; }
}
}
Я хочу проверить, имеет ли свойство "Баланс" свойство ReadOnly. Если я устанавливаю атрибут ReadOnly в свойстве Balance AccountViewModel, я могу получить его следующим образом:
Type t = typeof(AccountViewModel);
PropertyInfo pi = t.GetProperty("Balance");
bool isReadOnly = ReadOnlyAttribute.IsDefined(pi,typeof( ReadOnlyAttribute);
Я не могу получить информацию об атрибуте, если она находится в классе метаданных. Как проверить, существует ли атрибут? У меня есть классы метаданных, определенные для всех моделей моего представления, и вам нужен общий способ проверки атрибутов в классах метаданных.
Любые предложения?