2013-08-05 13 views
6

System.Reflection.MemberTypes için sekiz farklı numaralandırılmış değer vardır. Doğrudan belirli MemberInfo sınıflarına beş harita (ConstructorInfo, MemberInfo, vb). MemberTypes.NestedType bir MemberInfo yerine Type olarak düşünülebilir. Kafamı (1) MemberTypes.Custom ve (2) MemberTypes.TypeInfo üyeleri etrafında almaya çalışıyorum. Bu tür üyelere örnek olan var mı?Bir MemberTypes.Custom ve MemberTypes.TypeInfo üyesi örneği

+0

TypeInfo için - 'System.Type: System.Reflection.MemberInfo' olduğunu farkettiniz mi? –

cevap

4
public class Foo 
{ 
    public class Bar { } 
} 

Bu iki sınıfla, aşağıdakiler doğru olacaktır.

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

ve NestedType Tür iç içe olup olmadığını ayrım ile bir türü ile ilgileniyor olduğunu göstermektedir. TypeInfo numaralandırma numarası sadece adlandırma kuralıyla yapışır, oysa MemberInfo'un asıl alt öğesi Type'dur. Bir yandan, Type, adlandırma kuralıyla uyuşmak için TypeInfo olarak adlandırılmış olmalıdır, diğer yandan, Type'un ilk etapta MemberInfo türetilmiş olması biraz şüphelidir. Ama bu sadece böyle. Belki üye MemberInfo üye sadece üye üye yerine montaj veya tür üye olarak anlaşılmalıdır.

.NET 4.5'ten bu yana Type'dan başlayan ve Type.GetTypeInfo() extension method kullanılarak erişilebilen yeni alt sınıf TypeInfo; ayrımı görmek için oraya bakın.

MemberTypes.Custom'dan emin değilim, ancak CLI specification, özellikle II.10.2'ye bakın, bunun bir öznitelikle ilişkili özel öznitelikler veya diğer özel verileri ifade etmesi durumu olabilir. .NET reference source code'a bakıldığında, ek bilgiler sağlanmaz.