Exporter (0) Imprimer
Développer tout

Type, classe

Mise à jour : novembre 2007

Représente les déclarations de types : types classe, types interface, types tableau, types valeur, types énumération, paramètres de type, définitions de type générique et types génériques construits ouverts ou fermés.

Espace de noms :  System
Assembly :  mscorlib (dans 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
public abstract class Type extends MemberInfo implements _Type, IReflect

Type est la racine de la fonctionnalité System.Reflection et représente le principal moyen d'accéder aux métadonnées. Utilisez les membres de Type pour obtenir les informations concernant une déclaration de type, tel que les constructeurs, méthodes, champs, propriétés et événements d'une classe, ainsi que le module et l'assembly dans lesquels la classe est déployée.

L'opérateur C# typeof (opérateur GetType en Visual Basic, opérateur typeid en Visual C++) retourne un objet Type.

Un objet Type qui représente un type est unique ; en d'autres termes, deux références d'objet Type font référence au même objet si et seulement s'ils représentent le même type. Cela permet de comparer des objets Type à l'aide de l'égalité des références.

Sans ReflectionPermission, le code ne peut accéder qu'aux membres publics des assemblys chargés. Cela comprend notamment l'accès sans restriction à Object.GetType, l'accès aux types exportés publics par l'intermédiaire de Type.GetType et l'accès à GetTypeFromHandle. Certaines propriétés de Type, telles que FullName et Attributes, sont accessibles sans ReflectionPermission.

Type est une classe de base abstraite qui permet des implémentations multiples. Le système fournira toujours la classe dérivée RuntimeType. Dans la réflexion, toutes les classes commençant par le mot Runtime sont créées une seule fois par objet dans le système et prennent en charge les opérations de comparaison.

42892f65.alert_note(fr-fr,VS.90).gifRemarque :

Dans des scénarios multithread, ne verrouillez pas les objets Type pour synchroniser l'accès à des données static. Un autre code, sur lequel vous n'avez aucun contrôle, pourrait également verrouiller votre type de classe. Cela pourrait provoquer un blocage. Il est préférable de synchroniser l'accès à des données statiques en verrouillant un objet static privé.

Cette classe est thread-safe ; plusieurs threads peuvent procéder à une lecture simultanée à partir d'une instance de ce type. Une instance de Type peut représenter l'un des types suivants :

  • Classes

  • Types valeur

  • Tableaux

  • Interfaces

  • Pointeurs

  • Énumérations

  • Types génériques construits et définitions de types génériques

  • Arguments et paramètres de type des types génériques construits, définitions de types génériques et définitions des méthodes génériques

Une référence à l'objet Type associé à un type peut être obtenue des différentes manières indiquées ci-dessous :

  • La méthode Object.GetType retourne un objet Type qui représente le type d'une instance.

  • Les méthodes GetType statiques retournent un objet Type qui représente un type spécifié par son nom qualifié complet.

  • Les méthodes Module.GetTypes, Module.GetType et Module.FindTypes retournent des objets Type qui représentent les types définis dans un module. La première méthode peut être utilisée pour obtenir un tableau d'objets Type pour tous les types publics et privés définis dans un module. (Vous pouvez obtenir une instance de Module par l'intermédiaire des méthodes Assembly.GetModule ou Assembly.GetModules ou par l'intermédiaire de la propriété Type.Module.)

  • La méthode FindInterfaces retourne une liste filtrée de types interface pris en charge par un type.

  • La méthode GetElementType retourne un objet Type qui représente l'élément.

  • Les méthodes GetInterfaces et GetInterface retournent des objets Type représentant les types interface pris en charge par un type.

  • La méthode GetTypeArray retourne un tableau d'objets Type représentant les types spécifiés par un ensemble arbitraire d'objets. Les objets sont spécifiés avec un tableau de type Object.

  • Les méthodes GetTypeFromProgID et GetTypeFromCLSID sont fournies pour l'interopérabilité COM. Elles retournent un objet Type qui représente le type spécifié par ProgID ou CLSID.

  • La méthode GetTypeFromHandle est fournie pour l'interopérabilité. Elle retourne un objet Type qui représente le type spécifié par un handle de classe.

  • L'opérateur typeof C#, l'opérateur typeid C++ et l'opérateur GetType Visual Basic obtiennent l'objet Type d'un type.

  • La méthode MakeGenericType retourne un objet Type qui représente un type générique construit, lequel est un type construit ouvert si sa propriété ContainsGenericParameters retourne true ; sinon, c'est un type construit fermé. Un type générique peut être instancié uniquement s'il est fermé.

  • Les méthodes MakeArrayType, MakePointerType et MakeByRefType retournent les objets Type qui représentent, respectivement, un tableau d'un type spécifié, un pointeur vers un type spécifié et le type d'un paramètre de référence (ref en C#, ByRef en Visual Basic).

42892f65.alert_note(fr-fr,VS.90).gifRemarque :

Une classe dérivée peut accéder à des membres protégés des classes de base du code appelant. L'accès est également autorisé aux membres d'assembly de l'assembly du code appelant. La règle est la suivante : si vous êtes autorisé à accéder à du code à liaison anticipée, vous êtes également autorisé à accéder à du code à liaison tardive.

42892f65.alert_note(fr-fr,VS.90).gifRemarque :

Les interfaces qui développent d'autres interfaces n'héritent pas des méthodes définies dans les interfaces étendues.

Remarques à l'attention des héritiers :

Lorsque vous héritez de Type, vous devez substituer les membres suivants : 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(Boolean) et GetCustomAttributes.

L'exemple de code suivant présente quelques fonctionnalités représentatives de Type. L'opérateur C# typeof (opérateur GetType en Visual Basic, opérateur typeid en Visual C++) permet d'obtenir un objet Type représentant String. À partir de cet objet Type, la méthode GetMethod permet d'obtenir un MethodInfo représentant la surcharge de Substring qui prend un emplacement de départ et une longueur.

Pour identifier la signature de surcharge, l'exemple de code crée un tableau temporaire contenant deux objets Type qui représentent int (Integer en Visual Basic).

42892f65.alert_note(fr-fr,VS.90).gifRemarque :

Pour être précis, le tableau contient deux références à l'instance de Type qui représente int dans le domaine d'application actuel. Pour tout type, il y a une seule instance de Type par domaine d'application.

L'exemple de code utilise MethodInfo pour appeler la méthode Substring sur la chaîne "Hello, World!", et affiche le résultat.

using System;
using System.Reflection;

class Example
{
    static void Main()
    {
        Type t = typeof(String);

        MethodInfo substr = t.GetMethod("Substring", 
            new Type[] { typeof(int), typeof(int) });

        Object result = 
            substr.Invoke("Hello, World!", new Object[] { 7, 5 });
        Console.WriteLine("{0} returned \"{1}\".", substr, result);
    }
}

/* This code example produces the following output:

System.String Substring(Int32, Int32) returned "World".
 */


Ce type est thread-safe.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professionnel Édition x64, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile pour Smartphone, Windows Mobile pour Pocket PC, Xbox 360

Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

.NET Framework

Pris en charge dans : 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Pris en charge dans : 3.5, 2.0, 1.0

XNA Framework

Pris en charge dans : 2.0, 1.0

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft