Bir projenin sınıf yapısına ağaç görünümü yüklemek için yansıma kullanıyorum. Bir sınıftaki üyelerin her biri kendilerine atanan özel bir özelliğe sahiptir.Yansıma ile bir MemberInfo türünü alma
MemberInfo.GetCustomAttributes()
kullanarak bir sınıf için öznitelikleri alma konusunda bir sorunum yok, ancak bir sınıf üyesi özel bir sınıfsa ve daha sonra özel öznitelikleri döndürmek için kendini ayrıştırma gerekiyorsa bir çalışma yöntemine ihtiyacım var.
Şimdiye kadar, benim kodudur: Bir MemberInfo örneğinin hedef tür yüzden uygun şekilde işleyebilir almanın kolay yolu
MemberInfo[] membersInfo = typeof(Project).GetProperties();
foreach (MemberInfo memberInfo in membersInfo)
{
foreach (object attribute in memberInfo.GetCustomAttributes(true))
{
// Get the custom attribute of the class and store on the treeview
if (attribute is ReportAttribute)
{
if (((ReportAttribute)attribute).FriendlyName.Length > 0)
{
treeItem.Items.Add(new TreeViewItem() { Header = ((ReportAttribute)attribute).FriendlyName });
}
}
// PROBLEM HERE : I need to work out if the object is a specific type
// and then use reflection to get the structure and attributes.
}
}
var mı? Bariz bir şeyi kaçırdığımı hissediyorum, ancak dakikalar içinde daireler çiziyorum.
Evet, 'MemberInfo [] membersInfo =' bozuk bir işarettir. 'Var' gibi nedenlerimden biri - yanlış olan daha az şey. –
Fantastik, teşekkürler Daniel. – GrandMasterFlush