ClassInterfaceAttribute ClassInterfaceAttribute ClassInterfaceAttribute ClassInterfaceAttribute Class

Definition

Gibt die Art der Klassenschnittstelle an, die für eine für COM verfügbar gemachte Klasse generiert werden soll (sofern überhaupt eine Schnittstelle generiert wird).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
Vererbung
ClassInterfaceAttributeClassInterfaceAttributeClassInterfaceAttributeClassInterfaceAttribute
Attribute

Beispiele

Das folgende Beispiel zeigt, wie Sie anwenden der ClassInterfaceAttribute mit der ClassInterfaceType Wert AutoDispatch, generiert eine IDispatch eine Schnittstelle für 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

Hinweise

Sie können dieses Attribut auf die Assemblys oder Klassen anwenden.You can apply this attribute to assemblies or classes.

Dieses Attribut steuert, ob das Type Library Exporter (Tlbexp.exe) automatisch eine Klassenschnittstelle für die attributierte Klasse generiert.This attribute controls whether the Type Library Exporter (Tlbexp.exe) automatically generates a class interface for the attributed class. Eine Klassenschnittstelle hat den gleichen Namen wie die Klasse selbst, aber der Name wird mit einem Unterstrich vorangestellt.A class interface carries the same name as the class itself, but the name is prefixed with an underscore. Wenn zur Verfügung gestellt, die Klassenschnittstelle enthält alle der public, nicht- static Mitglieder der verwalteten Klasse, einschließlich der Elemente von der Basisklasse geerbt.When exposed, the class interface contains all the public, non- static members of the managed class, including members inherited from its base class. Verwaltete Klassen können keine Klassenschnittstelle zugreifen und müssen nicht, wie sie die Klasse, Elemente direkt zugreifen können.Managed classes cannot access a class interface and have no need to as they can access the class members directly. Tlbexp.exe generiert einen eindeutigen Schnittstellenbezeichner (IID) für die Klassenschnittstelle.Tlbexp.exe generates a unique interface identifier (IID) for the class interface.

Schnittstellen für Datenklassen können zwei oder nur-Dispatch-Schnittstellen sein.Class interfaces can be dual or dispatch-only interfaces. Optional können Sie unterdrückt die Generierung der Klassenschnittstelle und stattdessen eine benutzerdefinierte Schnittstelle.Optionally, you can suppress the generation of the class interface and provide a custom interface instead. Sie machen oder eine Klassenschnittstelle zu unterdrücken, indem Sie die Angabe einer System.Runtime.InteropServices.ClassInterfaceType -Enumerationsmember.You expose or suppress a class interface by specifying a System.Runtime.InteropServices.ClassInterfaceType enumeration member. Beim Anwenden von ClassInterfaceAttribute einer Assembly das Attribut bezieht sich auf alle Klassen in der Assembly, sofern die Einstellung mit ihrer eigenen Attribut der einzelnen Klassen überschrieben werden.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.

Obwohl die Aufgabe definieren Sie explizit Schnittstellen für jede Klasse von Schnittstellen für Datenklassen vermeiden, wird deren Verwendung in Produktionsanwendungen dringend abgeraten.Although class interfaces eliminate the task of explicitly defining interfaces for each class, their use in production applications is strongly discouraged. Duale Klassenschnittstellen können Clients auf eine bestimmte Schnittstellenlayout zu binden, die Weiterentwicklung die Klasse geändert werden kann.Dual class interfaces allow clients to bind to a specific interface layout that is subject to change as the class evolves. Betrachten Sie beispielsweise eine verwaltete Klasse, die eine Klassenschnittstelle für COM-Clients verfügbar macht.For example, consider a managed class that exposes a class interface to COM clients. Die erste Version der Klasse enthält Methoden North und South.The first version of the class contains methods North and South. Ein nicht verwalteter Client kann auf die Schnittstelle, die bietet binden North als die erste Methode in die Klassenschnittstelle und die Methode South als die zweite Methode.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. Sehen Sie sich nun mit die nächste Version von der Klasse, die eine neue Methode verfügt, East, zwischen Methoden inserted North und South.Now consider the next version of the class, which has a new method, East, inserted between methods North and South. Rufen die Methode nicht verwaltete Clients, die versuchen, eine Bindung an die neue Klasse über die alten Klassenschnittstelle im Endeffekt East Wenn diese Methode aufrufen möchten South, da sich die Positionierung von Methoden innerhalb der Schnittstelle geändert hat.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. Darüber hinaus wirkt sich auf jede Änderung an das Layout einer Basisklasse auch das Layout der Klassenschnittstelle für alle abgeleiteten Klassen.Moreover, any change to the layout of a base class also affects the layout of the class interface for all derived classes. Verwaltete Clients, die die Bindung direkt auf Klassen, nicht auf den gleichen Problemen bei der versionsverwaltung.Managed clients, which bind directly to classes, do not exhibit the same versioning problems. Besondere Richtlinien zur Verwendung der Klassenschnittstelle, finden Sie unter COM Callable Wrapper.For specific guidelines on using a class interface, see COM Callable Wrapper.

Die Tlbimp.exe (Type Library Importer-Tool) wendet auf importierten Klassen immer die ClassInterfaceType.None Enumerationsmember, um anzugeben, dass es sich bei vorhandenen COM nie machen Klassen verwaltete Schnittstellen.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.

Konstruktoren

ClassInterfaceAttribute(ClassInterfaceType) ClassInterfaceAttribute(ClassInterfaceType) ClassInterfaceAttribute(ClassInterfaceType) ClassInterfaceAttribute(ClassInterfaceType)

Initialisiert eine neue Instanz der ClassInterfaceAttribute-Klasse mit dem angegebenen ClassInterfaceType-Enumerationsmember.Initializes a new instance of the ClassInterfaceAttribute class with the specified ClassInterfaceType enumeration member.

ClassInterfaceAttribute(Int16) ClassInterfaceAttribute(Int16) ClassInterfaceAttribute(Int16) ClassInterfaceAttribute(Int16)

Initialisiert eine neue Instanz der ClassInterfaceAttribute-Klasse mit dem angegebenen ClassInterfaceType-Enumerationswert.Initializes a new instance of the ClassInterfaceAttribute class with the specified ClassInterfaceType enumeration value.

Eigenschaften

TypeId TypeId TypeId TypeId

Ruft bei Implementierung in einer abgeleiteten Klasse einen eindeutigen Bezeichner für dieses Attribute ab.When implemented in a derived class, gets a unique identifier for this Attribute.

(Inherited from Attribute)
Value Value Value Value

Ruft den ClassInterfaceType-Wert ab, der beschreibt, welcher Schnittstellentyp für die Klasse generiert werden soll.Gets the ClassInterfaceType value that describes which type of interface should be generated for the class.

Methoden

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist.Returns a value that indicates whether this instance is equal to a specified object.

(Inherited from Attribute)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Gibt den Hashcode für diese Instanz zurück.Returns the hash code for this instance.

(Inherited from Attribute)
GetType() GetType() GetType() GetType()

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

(Inherited from Object)
IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute()

Gibt beim Überschreiben in einer abgeleiteten Klasse an, ob der Wert der Instanz der Standardwert für die abgeleitete Klasse ist.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Inherited from Attribute)
Match(Object) Match(Object) Match(Object) Match(Object)

Beim Überschreiben in einer abgeleiteten Klasse wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem bestimmten Objekt entspricht.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Inherited from Attribute)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.Returns a string that represents the current object.

(Inherited from Object)

Explizite Schnittstellenimplementierungen

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

Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu.Maps a set of names to a corresponding set of dispatch identifiers.

(Inherited from Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Ruft die Typinformationen für ein Objekt ab, mit deren Hilfe die Typinformationen für eine Schnittstelle abgerufen werden können.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Inherited from Attribute)
_Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32)

Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Inherited from Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Stellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit.Provides access to properties and methods exposed by an object.

(Inherited from Attribute)

Gilt für:

Siehe auch