2010-10-14 14 views
8

Ich weiß, dass die BindingFlags verwendet werden, um öffentliche und nicht-öffentliche Mitglieder von einem Typ abzurufen.Wie kann ich die Barrierefreiheit einer MemberInfo-Instanz ermitteln?

Aber gibt es eine Möglichkeit festzustellen, ob eine MemberInfo-Instanz (oder abgeleitet wie PropertyInfo, MethodInfo) öffentlich ist oder nicht (nachdem sie von einer der Methoden auf Type zurückgegeben wurde)?

Thanx, Marc

Antwort

7

PropertyInfo, MethodBase usw. jeweils eine Attributes Eigenschaft, die diese Informationen hat - aber es gibt nichts in MemberInfo, weil jede Art von Mitglied seine eigene Art von Attributen Enum hat. Scheußlich, wie es ist, ich glaube, Sie kann Notwendigkeit, jede Unterklasse von MemberInfo separat zu behandeln :(Sie wahrscheinlich auf MemberInfo.MemberType wechseln und dann gegossen, die leicht schöner als viele as/Test-for-null Zweige sein, aber es ist immer noch nicht ideal :(

if (member.MemberType == MemberTypes.Property) 
{ 
    var property = (PropertyInfo) member; 
    ... 
} 
+0

Ah, ich sehe. ich sehe auch, dass Property nicht PropertyAttribues hat seine Zugänglichkeit anzuzeigen. So muss ich die Zugriffsmethoden und gehen mit diesen. Danke für Ihre explaination. – obiwanjacobi

+1

@obiwanjacobi: Vermutlich liegt das daran, dass Sie unterschiedliche Zugriffsmöglichkeiten für das Abrufen und Festlegen haben können: –

+0

Wie können Sie Propertyinfo von MemberType erhalten? Es gibt keine Besetzung. –

Verwandte Themen