ClassInterfaceAttribute Classe

Définition

Indique le type d'interface de classe à générer pour une classe exposée à COM, si une interface est effectivement générée.Indicates the type of class interface to be generated for a class exposed to COM, if an interface is generated at all.

public ref class ClassInterfaceAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class, Inherited=false)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class ClassInterfaceAttribute : Attribute
type ClassInterfaceAttribute = class
    inherit Attribute
Public NotInheritable Class ClassInterfaceAttribute
Inherits Attribute
Héritage
ClassInterfaceAttribute
Attributs

Exemples

L’exemple suivant ClassInterfaceAttribute montre comment appliquer le avec la ClassInterfaceType valeur AutoDispatch, qui génère une IDispatch interface pour MyClass.The following example shows how to apply the ClassInterfaceAttribute with the ClassInterfaceType value AutoDispatch, which generates an IDispatch interface for MyClass.

using namespace System::Runtime::InteropServices;

[ClassInterface(ClassInterfaceType::AutoDispatch)]
public ref class MyClass
{
public:
   MyClass(){}

};

using System.Runtime.InteropServices;

[ClassInterface(ClassInterfaceType.AutoDispatch)]
public class MyClass
{
   public MyClass() {}
}
Imports System.Runtime.InteropServices

<ClassInterface(ClassInterfaceType.AutoDispatch)> _
Public Class SampleClass    
    ' Insert class members here.
End Class

Remarques

Vous pouvez appliquer cet attribut à des assemblys ou des classes.You can apply this attribute to assemblies or classes.

Cet attribut contrôle si l’exportateur de bibliothèques de types (Tlbexp. exe) génère automatiquement une interface de classe pour la classe avec attributs.This attribute controls whether the Type Library Exporter (Tlbexp.exe) automatically generates a class interface for the attributed class. Une interface de classe porte le même nom que la classe elle-même, mais le nom est préfixé avec un trait de soulignement.A class interface carries the same name as the class itself, but the name is prefixed with an underscore. Quand elle est exposée, l’interface de publicclasse contient tous static les, non membres de la classe managée, y compris les membres hérités de sa classe de base.When exposed, the class interface contains all the public, non- static members of the managed class, including members inherited from its base class. Les classes managées ne peuvent pas accéder à une interface de classe et n’ont pas besoin de car elles peuvent accéder directement aux membres de la classe.Managed classes cannot access a class interface and have no need to as they can access the class members directly. Tlbexp. exe génère un identificateur d’interface (IID) unique pour l’interface de classe.Tlbexp.exe generates a unique interface identifier (IID) for the class interface.

Les interfaces de classe peuvent être des interfaces double ou de distribution uniquement.Class interfaces can be dual or dispatch-only interfaces. Si vous le souhaitez, vous pouvez supprimer la génération de l’interface de classe et fournir une interface personnalisée à la place.Optionally, you can suppress the generation of the class interface and provide a custom interface instead. Vous exposez ou supprimez une interface de System.Runtime.InteropServices.ClassInterfaceType classe en spécifiant un membre d’énumération.You expose or suppress a class interface by specifying a System.Runtime.InteropServices.ClassInterfaceType enumeration member. Quand vous appliquez ClassInterfaceAttribute à un assembly, l’attribut se rapporte à toutes les classes de l’assembly, sauf si les classes individuelles remplacent le paramètre par leur propre attribut.When you apply ClassInterfaceAttribute to an assembly, the attribute pertains to all classes in the assembly unless the individual classes override the setting with their own attribute.

Bien que les interfaces de classes éliminent la tâche de définition explicite des interfaces pour chaque classe, leur utilisation dans les applications de production est fortement déconseillée.Although class interfaces eliminate the task of explicitly defining interfaces for each class, their use in production applications is strongly discouraged. Les interfaces à deux classes permettent aux clients de se lier à une disposition d’interface spécifique qui est susceptible de changer à mesure que la classe évolue.Dual class interfaces allow clients to bind to a specific interface layout that is subject to change as the class evolves. Par exemple, considérez une classe managée qui expose une interface de classe à des clients COM.For example, consider a managed class that exposes a class interface to COM clients. La première version de la classe contient des North méthodes Southet.The first version of the class contains methods North and South. Un client non managé peut effectuer une liaison à l’interface de classe, North qui fournit comme première méthode dans l’interface de classe South et la méthode comme deuxième méthode.An unmanaged client can bind to the class interface, which provides North as the first method in the class interface and method South as the second method. Considérons à présent la prochaine version de la classe, qui a une nouvelle Eastméthode,, insérée Southentre les méthodes North et.Now consider the next version of the class, which has a new method, East, inserted between methods North and South. Les clients non managés qui essaient d’effectuer une liaison à la nouvelle classe via l’ancienne interface de classe East appellent la méthode lorsqu’ils envisagent d’appeler la méthode South, car le positionnement des méthodes dans l’interface a changé.Unmanaged clients that try to bind to the new class through the old class interface end up calling method East when they intend to call method South, because the positioning of methods within the interface has changed. En outre, toute modification apportée à la disposition d’une classe de base affecte également la disposition de l’interface de classe pour toutes les classes dérivées.Moreover, any change to the layout of a base class also affects the layout of the class interface for all derived classes. Les clients managés, qui sont directement liés aux classes, n’présentent pas les mêmes problèmes de Versioning.Managed clients, which bind directly to classes, do not exhibit the same versioning problems. Pour obtenir des instructions spécifiques sur l’utilisation d’une interface de classe, consultez wrapper CCW (COM Callable Wrapper).For specific guidelines on using a class interface, see COM Callable Wrapper.

Tlbimp. exe (importateur de bibliothèques de types) s’applique toujours aux classes ClassInterfaceType.None importées, le membre de l’énumération pour indiquer que les classes com existantes n’exposent jamais des interfaces managées.The Tlbimp.exe (Type Library Importer) always applies to imported classes the ClassInterfaceType.None enumeration member to indicate that existing COM classes never expose managed interfaces.

Constructeurs

ClassInterfaceAttribute(ClassInterfaceType)

Initialise une nouvelle instance de la classe ClassInterfaceAttribute avec le membre de l'énumération ClassInterfaceType spécifié.Initializes a new instance of the ClassInterfaceAttribute class with the specified ClassInterfaceType enumeration member.

ClassInterfaceAttribute(Int16)

Initialise une nouvelle instance de la classe ClassInterfaceAttribute avec la valeur d'énumération ClassInterfaceType spécifiée.Initializes a new instance of the ClassInterfaceAttribute class with the specified ClassInterfaceType enumeration value.

Propriétés

TypeId

Lors de l'implémentation dans une classe dérivée, obtient un identificateur unique pour l'objet Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Hérité de Attribute)
Value

Obtient la valeur ClassInterfaceType qui décrit le type d'interface qui doit être généré pour la classe.Gets the ClassInterfaceType value that describes which type of interface should be generated for the class.

Méthodes

Equals(Object)

Retourne une valeur qui indique si cette instance est égale à un objet spécifié.Returns a value that indicates whether this instance is equal to a specified object.

(Hérité de Attribute)
GetHashCode()

Retourne le code de hachage de cette instance.Returns the hash code for this instance.

(Hérité de Attribute)
GetType()

Obtient le Type de l'instance actuelle.Gets the Type of the current instance.

(Hérité de Object)
IsDefaultAttribute()

En cas de substitution dans une classe dérivée, indique si la valeur de cette instance est la valeur par défaut pour la classe dérivée.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Hérité de Attribute)
Match(Object)

En cas de substitution dans une classe dérivée, retourne une valeur indiquant si cette instance équivaut à un objet spécifié.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Hérité de Attribute)
MemberwiseClone()

Crée une copie superficielle du Object actuel.Creates a shallow copy of the current Object.

(Hérité de Object)
ToString()

Retourne une chaîne qui représente l'objet en cours.Returns a string that represents the current object.

(Hérité de Object)

Implémentations d’interfaces explicites

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch.Maps a set of names to a corresponding set of dispatch identifiers.

(Hérité de Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Récupère les informations de type pour un objet, qui peuvent être utilisées pour obtenir les informations de type d'une interface.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Hérité de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Hérité de Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fournit l'accès aux propriétés et aux méthodes exposées par un objet.Provides access to properties and methods exposed by an object.

(Hérité de Attribute)

S’applique à

Voir aussi