ClassInterfaceType ClassInterfaceType ClassInterfaceType ClassInterfaceType Enum

Definition

Bezeichnet den Typ der Klassenschnittstelle, der für eine Klasse generiert wird.Identifies the type of class interface that is generated for a class.

public enum class ClassInterfaceType
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public enum ClassInterfaceType
type ClassInterfaceType = 
Public Enum ClassInterfaceType
Vererbung
ClassInterfaceTypeClassInterfaceTypeClassInterfaceTypeClassInterfaceType
Attribute

Felder

AutoDispatch AutoDispatch AutoDispatch AutoDispatch 1

Gibt an, dass die Klasse nur spätes Binden für COM-Clients unterstützt.Indicates that the class only supports late binding for COM clients. Eine dispinterface für die Klasse wird auf Anforderung automatisch für COM-Clients verfügbar gemacht.A dispinterface for the class is automatically exposed to COM clients on request. Die vom Tlbexp.exe (Type Library Exporter) erstellte Typbibliothek enthält keine Typinformationen für die dispinterface, um zu verhindern, dass Clients die DISPIDs der Schnittstelle zwischenspeichern.The type library produced by Tlbexp.exe (Type Library Exporter) does not contain type information for the dispinterface in order to prevent clients from caching the DISPIDs of the interface. Bei der dispinterface treten keine der in ClassInterfaceAttribute beschriebenen Versionsprobleme auf, da für Clients nur spätes Binden an die Schnittstelle möglich ist.The dispinterface does not exhibit the versioning problems described in ClassInterfaceAttribute because clients can only late-bind to the interface.

Das ist die Standardeinstellung für ClassInterfaceAttribute.This is the default setting for ClassInterfaceAttribute.

AutoDual AutoDual AutoDual AutoDual 2

Gibt an, dass für die Klasse automatisch eine duale Klassenschnittstelle generiert und für COM verfügbar gemacht wird.Indicates that a dual class interface is automatically generated for the class and exposed to COM. Für die Klassenschnittstelle werden Typinformationen erstellt und in der Typbibliothek veröffentlicht.Type information is produced for the class interface and published in the type library. Aufgrund der unter ClassInterfaceAttribute beschriebenen Versionseinschränkungen wird von der Verwendung von AutoDual dringend abgeraten.Using AutoDual is strongly discouraged because of the versioning limitations described in ClassInterfaceAttribute.

None None None None 0

Gibt an, dass für die Klasse keine Klassenschnittstelle generiert wird.Indicates that no class interface is generated for the class. Wenn keine Schnittstellen explizit implementiert werden, kann die Klasse nur Zugriff mit spätem Binden über die IDispatch-Schnittstelle bereitstellen.If no interfaces are implemented explicitly, the class can only provide late-bound access through the IDispatch interface. Dies ist die empfohlene Einstellung für ClassInterfaceAttribute.This is the recommended setting for ClassInterfaceAttribute. Das Verwenden von ClassInterfaceType.None ist die einzige Möglichkeit, Funktionen über Schnittstellen verfügbar zu machen, die von der Klasse explizit implementiert werden.Using ClassInterfaceType.None is the only way to expose functionality through interfaces implemented explicitly by the class.

Beispiele

In diesem Beispiel wird gezeigt, wie ClassInterfaceAttribute das auf einen Typ angewendet wird ClassInterfaceType, wobei festgelegt wird.This example shows how to apply the ClassInterfaceAttribute to a type, setting the ClassInterfaceType. Auf diese Weise definierte Klassen können aus nicht verwaltetem COM verwendet werden.Classes defined this way can be used from unmanaged COM.

using namespace System;
using namespace System::Runtime::InteropServices;

// Have the CLR expose a class interface (derived from IDispatch)
// for this type. COM clients can call the  members of this
// class using the Invoke method from the IDispatch interface.
[ClassInterface(ClassInterfaceType::AutoDispatch)]
public ref class AClassUsableViaCOM
{
public:
    AClassUsableViaCOM() 
    { 
    }

public:
    int Add(int x, int y)
    {
        return x + y;
    }
};

// The CLR does not expose a class interface for this type.
// COM clients can call the members of this class using
// the methods from the IComparable interface.
[ClassInterface(ClassInterfaceType::None)]
public ref class AnotherClassUsableViaCOM : public IComparable
{
public:
    AnotherClassUsableViaCOM() 
    { 
    }

    virtual int CompareTo(Object^ o) = IComparable::CompareTo
    {
        return 0;
    }
};
using System;
using System.Runtime.InteropServices;

// Have the CLR expose a class interface (derived from IDispatch) for this type.
// COM clients can call the  members of this class using the Invoke method from the IDispatch interface.
[ClassInterface(ClassInterfaceType.AutoDispatch)]
public class AClassUsableViaCOM
{
    public AClassUsableViaCOM() { }

    public Int32 Add(Int32 x, Int32 y) { return x + y; }
}

// The CLR does not expose a class interface for this type.
// COM clients can call the members of this class using the methods from the IComparable interface.
[ClassInterface(ClassInterfaceType.None)]
public class AnotherClassUsableViaCOM : IComparable
{
    public AnotherClassUsableViaCOM() { }

    Int32 IComparable.CompareTo(Object o) { return 0; }
}
Imports System
Imports System.Runtime.InteropServices


' Have the CLR expose a class interface (derived from IDispatch) for this type.
' COM clients can call the  members of this class using the Invoke method from the IDispatch interface.
<ClassInterface(ClassInterfaceType.AutoDispatch)> _
Public Class AClassUsableViaCOM

    Public Sub New()

    End Sub

    Public Function Add(ByVal x As Int32, ByVal y As Int32) As Int32
        Return x + y

    End Function
End Class
' The CLR does not expose a class interface for this type.
' COM clients can call the members of this class using the methods from the IComparable interface.
<ClassInterface(ClassInterfaceType.None)> _
Public Class AnotherClassUsableViaCOM
    Implements IComparable

    Public Sub New()

    End Sub

    Function CompareTo(ByVal o As [Object]) As Int32 Implements IComparable.CompareTo
        Return 0

    End Function 'IComparable.CompareTo
End Class

Hinweise

Diese Enumeration wird in Verbindung mit dem ClassInterfaceAttribute -Attribut verwendet.This enumeration is used in conjunction with the ClassInterfaceAttribute attribute.

Gilt für:

Siehe auch