2013-08-05 16 views
6

Es gibt acht verschiedene Aufzählungswerte für System.Reflection.MemberTypes. Fünf können direkt zu bestimmten MemberInfo-Klassen (ConstructorInfo, MemberInfo usw.) zugeordnet werden. Der MemberTypes.NestedType kann als Type und nicht als MemberInfo betrachtet werden. Ich versuche, meinen Kopf (1) MemberTypes.Custom und (2) MemberTypes.TypeInfo Mitglieder zu bekommen. Hat jemand ein Beispiel für solche Mitglieder?Ein Beispiel für MemberTypes.Custom und MemberTypes.TypeInfo member

+0

Für TypeInfo - haben Sie festgestellt, dass 'System.Type: System.Reflection.MemberInfo'? –

Antwort

4
public class Foo 
{ 
    public class Bar { } 
} 

Mit diesen beiden Klassen wird das Folgende zutreffen.

typeof(Foo).MemberType == MemberTypes.TypeInfo 
typeof(Foo.Bar).MemberType == MemberTypes.NestedType 

Sowohl TypeInfo und NestedType zeigen, dass Sie mit einem Typ mit der Unterscheidung handelt, ob der Typ verschachtelt ist oder nicht. Der Aufzählungswert TypeInfo bleibt nur bei der Namenskonvention, während der tatsächliche Subtyp MemberInfoType ist. Auf der einen Seite hätte TypeTypeInfo genannt werden sollen, um mit der Namenskonvention zu bleiben, auf der anderen Seite scheint es ein wenig fraglich, dass Type in erster Linie von MemberInfo abgeleitet ist. Aber so ist es eben. Vielleicht sollte Mitglied in MemberInfo besser als Assembly oder Typ Member statt nur Typ Member verstanden werden.

Seit .NET 4.5 gibt es neue Unterklasse TypeInfo erben von Type und zugänglich mit der Type.GetTypeInfo() extension method; Sehen Sie dort für die Unterscheidung.

Ich bin mir nicht sicher über MemberTypes.Custom aber mit Blick auf CLI specification, insbesondere II.10.2, kann es der Fall sein, dass dies auf benutzerdefinierte Attribute oder andere benutzerdefinierte Daten mit einem Typ verbunden bezieht. Ein Blick auf die .NET reference source code liefert auch keine zusätzlichen Erkenntnisse.

Verwandte Themen