ClassInterfaceType Výčet

Definice

Identifikuje typ rozhraní třídy, který je generován pro třídu.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
Dědičnost
ClassInterfaceType
Atributy

Pole

AutoDispatch 1

Označuje, že třída podporuje pouze pozdní vazbu pro klienty modelu COM.Indicates that the class only supports late binding for COM clients. dispinterface Pro třídu je automaticky vystaveno klientům modelu COM na vyžádání.A dispinterface for the class is automatically exposed to COM clients on request. Knihovna typů vytvořená nástrojem Tlbexp. exe (Exportér knihovny typů) neobsahuje informace o typu, dispinterface aby bylo možné zabránit klientům v ukládání identifikátorů DISPID rozhraní do mezipaměti.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. Neprojevuje problémy se správou verzí popsaných v ClassInterfaceAttribute tématu, protože klienti můžou pouze pozdní vazby k rozhraní. dispinterfaceThe dispinterface does not exhibit the versioning problems described in ClassInterfaceAttribute because clients can only late-bind to the interface.

Toto je výchozí nastavení pro ClassInterfaceAttribute.This is the default setting for ClassInterfaceAttribute.

AutoDual 2

Označuje, že rozhraní duální třídy je automaticky vygenerováno pro třídu a vystaveno pro model COM.Indicates that a dual class interface is automatically generated for the class and exposed to COM. Informace o typu jsou vytvořeny pro rozhraní třídy a publikovány v knihovně typů.Type information is produced for the class interface and published in the type library. Použití AutoDual se důrazně nedoporučuje z důvodu omezení verzí popsaných v ClassInterfaceAttributetématu.Using AutoDual is strongly discouraged because of the versioning limitations described in ClassInterfaceAttribute.

None 0

Označuje, že pro třídu není vygenerováno žádné rozhraní třídy.Indicates that no class interface is generated for the class. Pokud nejsou explicitně implementována žádná rozhraní, třída může poskytnout pouze pozdě vázaný přístup prostřednictvím IDispatch rozhraní.If no interfaces are implemented explicitly, the class can only provide late-bound access through the IDispatch interface. Toto je doporučené nastavení pro ClassInterfaceAttribute.This is the recommended setting for ClassInterfaceAttribute. Použití ClassInterfaceType.None je jediný způsob, jak vystavit funkce prostřednictvím rozhraní implementovaných explicitně třídou.Using ClassInterfaceType.None is the only way to expose functionality through interfaces implemented explicitly by the class.

Příklady

Tento příklad ukazuje, jak použít ClassInterfaceAttribute pro typ, ClassInterfaceTypenastavení.This example shows how to apply the ClassInterfaceAttribute to a type, setting the ClassInterfaceType. Třídy definované tímto způsobem lze použít z nespravovaného modelu COM.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.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

Poznámky

Tento výčet se používá ve spojení s ClassInterfaceAttribute atributem.This enumeration is used in conjunction with the ClassInterfaceAttribute attribute.

Platí pro

Viz také