Freigeben über


ClassInterfaceType-Enumeration

 

Veröffentlicht: Oktober 2016

Identifiziert die Art der Klassenschnittstelle, die für eine Klasse generiert wird.

Namespace:   System.Runtime.InteropServices
Assembly:  mscorlib (in mscorlib.dll)

Syntax

[SerializableAttribute]
[ComVisibleAttribute(true)]
public enum ClassInterfaceType
[SerializableAttribute]
[ComVisibleAttribute(true)]
public enum class ClassInterfaceType
[<SerializableAttribute>]
[<ComVisibleAttribute(true)>]
type ClassInterfaceType
<SerializableAttribute>
<ComVisibleAttribute(True)>
Public Enumeration ClassInterfaceType

Member

Membername Beschreibung
AutoDispatch

Gibt an, dass die Klasse nur spätes Binden für COM-Clients unterstützt. Ein dispinterface für die Klasse automatisch für COM-Clients auf Anforderung verfügbar gemacht wird. Die Typbibliothek, erzeugt Tlbexp.exe (Type Library Exporter) enthält keine Typinformationen für die dispinterface um zu verhindern, dass Clients die DISPIDs der Schnittstelle zwischenspeichern. Die dispinterface ist nicht die beschriebenen Versionsprobleme ClassInterfaceAttribute da Clients nur spätes Binden an die Schnittstelle möglich.

AutoDual

Gibt an, dass eine duale Klassenschnittstelle automatisch für die Klasse generiert und für COM verfügbar gemacht Geben Sie Informationen für die Klassenschnittstelle erzeugt und in der Typbibliothek veröffentlicht. Mit AutoDual wird dringend abgeraten, aufgrund der beschriebenen versionseinschränkungen ClassInterfaceAttribute.

None

Gibt an, dass für die Klasse keine Klassenschnittstelle generiert wird. Wenn keine Schnittstellen explizit implementiert werden, kann die Klasse nur spät gebunden Zugriff durch Bereitstellen der IDispatch Schnittstelle. Dies ist die empfohlene Einstellung für ClassInterfaceAttribute. Mithilfe von ClassInterfaceType.None ist die einzige Möglichkeit, Funktionen über Schnittstellen, die von der Klasse explizit implementiert verfügbar zu machen.

Hinweise

Diese Enumeration wird verwendet, in Verbindung mit der ClassInterfaceAttribute Attribut.

Beispiele

Dieses Beispiel veranschaulicht das Anwenden der ClassInterfaceAttribute auf einen Typ Festlegen der ClassInterfaceType. Klassen, die auf diese Weise definiert, können von nicht verwaltetem COM verwendet werden

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
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;
    }
};

Versionsinformationen

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 1.1
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Windows Phone
Verfügbar seit 8.1

Siehe auch

System.Runtime.InteropServices-Namespace
Tlbexp.exe (Type Library Exporter)

Zurück zum Anfang