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

Im folgenden Beispiel wird gezeigt, wie das ClassInterfaceAttribute mit dem ClassInterfaceType - AutoDispatchWert angewendet wird, IDispatch der eine MyClassSchnittstelle für generiert.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 Assemblys oder Klassen anwenden.You can apply this attribute to assemblies or classes.

Dieses Attribut steuert, ob das Type Library Exporter-Tool (Tlbexp. exe) automatisch eine Klassen Schnittstelle 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 Klassen Schnittstelle hat denselben Namen wie die Klasse selbst, dem Namen wird jedoch ein Unterstrich vorangestellt.A class interface carries the same name as the class itself, but the name is prefixed with an underscore. Wenn Sie verfügbar gemacht wird, enthält die Klassen publicSchnittstelle alle nicht static -Member der verwalteten Klasse, einschließlich der von der Basisklasse geerbten Member.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 nicht auf eine Klassen Schnittstelle zugreifen und sind nicht erforderlich, da Sie direkt auf die Klassenmember 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 Schnittstellen Bezeichner (IID) für die Klassen Schnittstelle.Tlbexp.exe generates a unique interface identifier (IID) for the class interface.

Klassen Schnittstellen können Dual-oder Dispatch-only-Schnittstellen sein.Class interfaces can be dual or dispatch-only interfaces. Optional können Sie die Generierung der Klassen Schnittstelle unterdrücken und stattdessen eine benutzerdefinierte Schnittstelle bereitstellen.Optionally, you can suppress the generation of the class interface and provide a custom interface instead. Sie machen eine Klassen Schnittstelle verfügbar oder unterdrücken Sie System.Runtime.InteropServices.ClassInterfaceType durch Angabe eines-Enumerationsmembers.You expose or suppress a class interface by specifying a System.Runtime.InteropServices.ClassInterfaceType enumeration member. Wenn Sie auf ClassInterfaceAttribute eine Assembly anwenden, bezieht sich das Attribut auf alle Klassen in der Assembly, es sei denn, die einzelnen Klassen überschreiben die Einstellung mit Ihrem eigenen 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.

Obwohl Klassen Schnittstellen das explizite Definieren von Schnittstellen für jede Klasse eliminieren, wird dringend davon abgeraten, die Verwendung in Produktionsanwendungen zu verwenden.Although class interfaces eliminate the task of explicitly defining interfaces for each class, their use in production applications is strongly discouraged. Duale Klassen Schnittstellen ermöglichen Clients das Binden an ein bestimmtes Schnittstellen Layout, das bei der Entwicklung der 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. Stellen Sie sich z. b. eine verwaltete Klasse vor, die für com-Clients eine Klassen Schnittstelle 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 eine Bindung an die Klassen Schnittstelle herstellen North , die als erste Methode in der Klassen Schnittstelle und South -Methode als zweite Methode bereitstellt.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. Beachten Sie nun die nächste Version der-Klasse, die eine neue Methode Eastenthält, die zwischen Methoden North und Southeingefügt wurde.Now consider the next version of the class, which has a new method, East, inserted between methods North and South. Nicht verwaltete Clients, die versuchen, über die alte Klassen Schnittstelle eine Bindung an die neue Klasse durchzuführen East , rufen die Methode auf, SouthWenn Sie beabsichtigen, die Methode aufzurufen, 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. Außerdem wirkt sich jede Änderung am Layout einer Basisklasse auch auf das Layout der Klassen Schnittstelle für alle abgeleiteten Klassen aus.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 direkt an Klassen gebunden werden, weisen nicht die gleichen Versionierungsprobleme auf.Managed clients, which bind directly to classes, do not exhibit the same versioning problems. Spezifische Richtlinien zur Verwendung einer Klassen Schnittstelle finden Sie unter COM Callable Wrapper.For specific guidelines on using a class interface, see COM Callable Wrapper.

" Tlbimp. exe" (Type Library-Import Programm) gilt immer für ClassInterfaceType.None importierte Klassen, um den Enumerationsmember anzugeben, dass vorhandene COM-Klassen niemals verwaltete Schnittstellen verfügbar machen.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