Ich verwende Reflection, um eine Treeview mit der Klassenstruktur eines Projekts zu laden. Jedem Mitglied einer Klasse ist ein benutzerdefiniertes Attribut zugewiesen.Abrufen des Typs einer MemberInfo mit Reflektion
Ich habe kein Problem beim Abrufen der Attribute für eine Klasse mit MemberInfo.GetCustomAttributes()
aber ich brauche eine Möglichkeit zu erarbeiten, wenn ein Klassenmitglied eine benutzerdefinierte Klasse ist und dann selbst analysiert, um die benutzerdefinierten Attribute zurückzugeben.
Bisher ist mein Code:
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 eine einfache Möglichkeit, den Zieltyp einer Member Instanz so von immer ich es angemessen umgehen kann? Ich glaube, ich vermisse etwas Offensichtliches, aber ich laufe im Augenblick im Kreis herum.
Ja, die 'MemberInfo [] membersInfo =' ist ein schlechtes Zeichen. Einer der Gründe, warum ich 'var' mag - weniger Dinge, um falsch zu liegen. –
Fantastisch, danke Daniel. – GrandMasterFlush