2013-08-05 5 views
6

Esistono otto diversi valori enumerati per System.Reflection.MemberTypes. Cinque mappe direttamente su specifiche classi MemberInfo (ConstructorInfo, MemberInfo, ecc.). MemberTypes.NestedType può essere pensato come Type piuttosto che come MemberInfo. Sto cercando di capire (1) MemberTypes.Custom e (2) MemberTypes.TypeInfo membri. Qualcuno ha un esempio di tali membri?Un esempio di membro MemberTypes.Custom e MemberTypes.TypeInfo

+0

Per TypeInfo - hai capito che 'System.Type: System.Reflection.MemberInfo'? –

risposta

4
public class Foo 
{ 
    public class Bar { } 
} 

Con queste due classi il seguente sarà vero.

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

Sia TypeInfo e NestedType indicano che avete a che fare con un tipo con la distinzione se il tipo è annidato o meno. Il valore di enumerazione TypeInfo si limita alla convenzione di denominazione mentre il sottotipo effettivo di MemberInfo è Type. Da un lato Type avrebbe dovuto essere chiamato TypeInfo per attenersi alla convenzione di denominazione, d'altra parte sembra un po 'discutibile che Type sia derivato da MemberInfo in primo luogo. Ma è proprio così. Forse il membro in MemberInfo dovrebbe essere meglio compreso come membro assembly o type invece di solo member member.

Da .NET 4.5 esiste una nuova sottoclasse TypeInfo che eredita da Type e accessibile tramite Type.GetTypeInfo() extension method; vedere lì per la distinzione.

Non sono sicuro di MemberTypes.Custom ma guardando CLI specification, in particolare II.10.2, è possibile che si tratti di attributi personalizzati o di altri dati personalizzati associati a un tipo. Guardando allo .NET reference source code non si ottengono ulteriori informazioni.

Problemi correlati