Belirli bir sınıftaki özelliklerin bir ReadOnly öznitelik kümesi olup olmadığını kontrol etmek için yansıma kullanmaya çalışıyorum. Ben kullanıyorum sınıfları meta veriler için kısmi "dostum" sınıfını kullanarak (MVC Görünüm Modelleri bulunmaktadır.C# Buddy Sınıfları/Meta Verileri ve Yansıma
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; }
}
}
ben "Denge" ReadOnly özelliğinin olup olmadığını kontrol etmek istiyorum. Ben Dengesi ReadOnly özniteliği ayarlarsanız AccountViewModel malı, ben bunu şu şekilde alabilirsiniz.? o meta veri sınıfına ise
Type t = typeof(AccountViewModel);
PropertyInfo pi = t.GetProperty("Balance");
bool isReadOnly = ReadOnlyAttribute.IsDefined(pi,typeof(ReadOnlyAttribute);
Ben nitelik bilgisi alamıyor i nitelik varsa kontrol edebilirsiniz nasıl meta veri sınıfları tanımladıktan tüm görünüm modellerim için ve meta veri sınıflarındaki öznitelikleri kontrol etmek için genel bir yönteme ihtiyaç duyarsınız.
Herhangi bir öneriniz var mı?
özelliğinizde bulunup bulunmadığını kontrol ediyoruz sakının ve ... MetaData türlerini almak için
GetCustomAttributes
kullanmak ve bunları da özelliklerini denetlemek için 'gerçek olmasıdır '. Özellik tanımlanmışsa ne olacağını düşündünüz mü? [ReadOnlyAttribute (false)] '? –Üzgünüm ama çözümünüzü anlayamadım. :( – Rohit