Esporta (0) Stampa
Espandi tutto

Classe Type

Rappresenta dichiarazioni di tipo: tipi classe, tipi interfaccia, tipi matrice, tipi di valore e di enumerazione, parametri di tipo, definizioni di tipo generico e tipi generici costruiti chiusi o aperti.

Spazio dei nomi: System
Assembly: mscorlib (in mscorlib.dll)

[SerializableAttribute] 
[ComVisibleAttribute(true)] 
[ClassInterfaceAttribute(ClassInterfaceType.None)] 
public abstract class Type : MemberInfo, _Type, IReflect
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
/** @attribute ClassInterfaceAttribute(ClassInterfaceType.None) */ 
public abstract class Type extends MemberInfo implements _Type, IReflect
SerializableAttribute 
ComVisibleAttribute(true) 
ClassInterfaceAttribute(ClassInterfaceType.None) 
public abstract class Type extends MemberInfo implements _Type, IReflect

Type è la radice della funzionalità dello spazio dei nomi System.Reflection e rappresenta il modo principale per accedere ai metadati. Utilizzare i membri di Type per ottenere informazioni su una dichiarazione del tipo, come i costruttori, i metodi, i campi, le proprietà e gli eventi di una classe, oltre al modulo e all'assembly in cui la classe è distribuita.

Un oggetto Type che rappresenta un tipo è univoco: due riferimenti a un oggetto Type fanno riferimento allo stesso oggetto solo se rappresentano lo stesso tipo. In questo modo, è possibile eseguire il confronto di oggetti Type utilizzando l'uguaglianza dei riferimenti.

Senza l'oggetto ReflectionPermission , al codice è consentito l'accesso solo ai membri pubblici degli assembly caricati. Tale condizione comprende, pur senza limitarsi a questo, l'accesso senza restrizioni al metodo Object.GetType , l'accesso ai tipi pubblici esportati tramite il metodo Type.GetType e l'accesso al metodo GetTypeFromHandle . Ad alcune proprietà di Type , quali FullName e Attributes è possibile accedere senza ReflectionPermission .

Type è una classe base astratta che consente più implementazioni. Verrà sempre fornito il RuntimeType della classe derivata. Nella reflection tutte le classi che iniziano con la parola Runtime sono create una sola volta per ogni oggetto nel sistema e supportano operazioni di confronto.

NotaNota

Negli scenari multithreading, non bloccare oggetti Type per sincronizzare l'accesso a dati static. Anche altro tipo di codice, su cui non si ha controllo, potrebbe comportare il blocco del tipo della classe. La conseguenza diretta potrebbe essere un deadlock. Sincronizzare invece l'accesso a dati statici bloccando un oggetto static privato.

Si tratta di una classe thread-safe. Più thread possono eseguire contemporaneamente la lettura di un'istanza di questo tipo. Un'istanza di Type può rappresentare uno qualsiasi dei seguenti tipi:

  • Classi

  • Tipi di valore

  • Matrici

  • Interfacce

  • Puntatori

  • Enumerazioni

  • Tipi generici costruiti e definizioni di tipo generico

  • Argomenti e parametri di tipo di tipi generici costruiti, definizioni di tipo generico e definizioni di metodo generico

È possibile ottenere un riferimento all'oggetto Type associato a un tipo nei modi descritti di seguito.

  • Il metodo Object.GetType restituisce un oggetto Type che rappresenta il tipo di un'istanza.

  • Il metodo GetType statico restituisce un oggetto Type che rappresenta un tipo specificato con il nome completo.

  • I metodi Module.GetTypes, Module.GetType e Module.FindTypes restituiscono oggetti Type che rappresentano i tipi definiti in un modulo. Il primo metodo può essere utilizzato per ottenere una matrice di oggetti Type per tutti i tipi pubblici e privati definiti in un modulo. Per ottenere un'istanza di Module è possibile utilizzare il metodo Assembly.GetModule o Assembly.GetModules oppure la proprietà Type.Module.

  • Il metodo FindInterfaces restituisce un elenco filtrato dei tipi di interfaccia supportati da un tipo.

  • Il metodo GetElementType restituisce un oggetto Type che rappresenta l'elemento.

  • I metodi GetInterfaces e GetInterface restituiscono oggetti Type che rappresentano i tipi di interfaccia supportati da un tipo.

  • Il metodo GetTypeArray restituisce una matrice di oggetti Type che rappresentano i tipi specificati da un insieme arbitrario di oggetti. Gli oggetti sono specificati con una matrice di tipo Object.

  • I metodi GetTypeFromProgID e GetTypeFromCLSID sono forniti per l'interoperabilità COM. Restituiscono un oggetto Type che rappresenta il tipo specificato da un ProgID o CLSID.

  • Il metodo GetTypeFromHandle viene fornito per l'interoperabilità. Restituisce un oggetto Type che rappresenta il tipo specificato da un handle della classe.

  • L'operatore typeof C#, l'operatore typeid C++ e l'operatore GetType Visual Basic ottengono l'oggetto Type per un tipo.

  • Il metodo MakeGenericType restituisce un oggetto Type che rappresenta un tipo generico costruito, ovvero un tipo costruito aperto se la relativa proprietà ContainsGenericParameters restituisce true e un tipo costruito chiuso in caso contrario. È possibile creare un'istanza di un tipo generico soltanto se si tratta di un tipo generico chiuso.

  • I metodi MakeArrayType, MakePointerType e MakeByRefType restituiscono oggetti Type che rappresentano rispettivamente una matrice di un tipo specificato, un puntatore a un tipo specificato e il tipo di un parametro di riferimento (ref in C#, ByRef in Visual Basic).

NotaNota

Una classe derivata può accedere ai membri protetti delle classi base del codice chiamante. Inoltre, l'accesso è consentito ai membri a livello di assembly dell'assembly del codice chiamante. In genere, se viene consentito l'accesso al codice ad associazione anticipata, viene consentito anche al codice ad associazione tardiva.

NotaNota

Le interfacce che estendono altre interfacce non ereditano i metodi definiti nelle interfacce estese.

Note sull'ereditarietà: Quando si eredita da Type, è necessario sottoporre a override i seguenti membri: GUID, InvokeMember(String,BindingFlags,Binder,Object,Object[],ParameterModifier[],CultureInfo,String[]), Module, Assembly, TypeHandle, FullName, Namespace, AssemblyQualifiedName, BaseType, GetConstructorImpl, GetConstructors(BindingFlags), GetMethodImpl, GetMethods(BindingFlags), GetField(String,BindingFlags), GetFields(BindingFlags), GetInterface(String,Boolean), GetInterfaces, GetEvent(String,BindingFlags), GetEvents(BindingFlags), GetPropertyImpl, GetProperties(BindingFlags), GetNestedType(String,BindingFlags), GetNestedTypes(BindingFlags), GetAttributeFlagsImpl, IsArrayImpl, IsByRefImpl, IsPointerImpl, IsPrimitiveImpl, IsCOMObjectImpl, GetElementType, HasElementTypeImpl, UnderlyingSystemType, MemberInfo.Name, MemberInfo.IsDefined, MemberInfo.GetCustomAttributes e GetCustomAttributes.

Questo tipo è thread-safe.

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile per Pocket PC, Windows Mobile per Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema.

.NET Framework

Supportato in: 2.0 1.1 1.0

.NET Compact Framework

Supportato in: 2.0 1.0

Aggiunte alla community

AGGIUNGI
Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione degli utenti in merito al sito Web di MSDN. Se si sceglie di partecipare, quando si lascia il sito Web di MSDN verrà visualizzato il sondaggio in linea.

Si desidera partecipare?
Mostra:
© 2014 Microsoft