2009-08-18 3 views
5

Nachdem ich mit Reflektion erfolgreich eine Liste bestimmter Typen aus einer Baugruppe erhalten habe, möchte ich nun auf die öffentlichen Eigenschaften von jeder dieser Komponenten zugreifen.Wenn Reflektion verwendet wird, um Eigenschaften zu erhalten, wie kann ich meine Suche auf die Unterklasse beschränken, an der ich interessiert bin?

Jeder dieser Typen stammt von mindestens einer Basisklasse.

Ich merke, wenn ich Eigenschaften für einen Typ bekomme, bekomme ich auch Eigenschaften von den Basisklassen.

Ich brauche eine Möglichkeit, Basisklasse-Eigenschaften herauszufiltern und nur die Eigenschaften für den Typ, den ich anrufe, erhalten Eigenschaften abrufen.

Ich denke, es wäre ähnlich, wie ich nur Subklassen eines Basistyps erhalten, mit Ausnahme des Basistyps, von einem bestimmten Basistyp.

Assembly.GetAssembly(baseType).GetTypes().Where(type => type.IsSubclassOf(baseType)).ToList() 

Antwort

11

Verwenden BindingFlags.DeclaredOnly in Ihren Anruf Type.GetProperties:

var properties = Type.GetProperties(BindingFlags.DeclaredOnly | 
            BindingFlags.Public | 
            BindingFlags.Instance); 
+0

@ hier towps- sehen mehr zu lesen: http://msdn.microsoft.com/en-us/library/kyaxdd3x.aspx – RichardOD

+0

@Richard: wird Link hinzufügen ... –

+0

Danke Leute! Ich war mir nicht sicher, warum nur das Anfügen der DeclaredOnly-Flagge mir nichts brachte. Scheint es, dass du öffentliche und Instanzen benötigst? DeclareOnly und Public haben mir immer noch nichts gebracht. – topwik

2

die Bindung Flagge BindingFlags.DeclaredOnly im GetProperties Methode verwenden

Verwandte Themen