Immer den Typ einer MemberInfo mit Reflexion
Ich bin mit Reflexion laden Sie ein treeview-mit der Klassen-Struktur des Projekts. Jedes der Mitglieder in einer Klasse haben ein benutzerdefiniertes Attribut zugewiesen.
Habe ich kein problem, die Attribute für eine Klasse mit MemberInfo.GetCustomAttributes()
aber ich brauche eine Art zu arbeiten heraus, ob eine Klasse ist eine eigene Klasse und muss dann auch die Analyse selbst zurück die benutzerdefinierten Attribute.
Bisher, mein code ist:
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.
}
}
Gibt es einen einfachen Weg, um die Ziel-Typ der ein MemberInfo-Instanz, so kann ich entsprechend behandeln? Ich glaube, ich bin fehlt etwas offensichtlich, aber ich werde die Runde in Kreisen in der minute.
InformationsquelleAutor der Frage GrandMasterFlush | 2013-04-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
GetProperties
gibt ein array vonPropertyInfo
so sollten Sie diese verwenden.Dann ist es einfach eine Frage der
Art der Unterkunft
Eigenschaft.InformationsquelleAutor der Antwort Daniel Hilgarth
Ich denke, dass kann man bessere Leistung, wenn Sie tragen um diese Erweiterung-Methode:
Sollte für jeden
MemberInfo
nicht nurPropertyInfo
. Vermeiden Sie möglicherweiseMethodInfo
aus dieser Liste, da Ihr nicht unter liegenden Typ per se (aber zurück geben).In Ihrem Fall:
Ich Frage mich, warum dies war nicht Teil von BCL standardmäßig.
InformationsquelleAutor der Antwort nawfal