ClassInterfaceType ClassInterfaceType ClassInterfaceType ClassInterfaceType Enum

Определение

Определяет тип интерфейса класса, созданного для класса.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
Наследование
ClassInterfaceTypeClassInterfaceTypeClassInterfaceTypeClassInterfaceType
Атрибуты

Поля

AutoDispatch AutoDispatch AutoDispatch AutoDispatch 1

Указывает, что класс поддерживает только позднее связывание для клиентов COM.Indicates that the class only supports late binding for COM clients. Интерфейс dispinterface класса автоматически предоставляется клиентам COM по запросу.A dispinterface for the class is automatically exposed to COM clients on request. Библиотека типов, созданная программой Tlbexp.exe (программа экспорта библиотек типов), не содержит информации о типе для интерфейса dispinterface, чтобы не допустить кэширование значений DISPID клиентами.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. Интерфейс dispinterface исключает возникновение проблем с версиями, рассмотренных в описании класса ClassInterfaceAttribute, поскольку клиенты могут использовать только позднее связывание с интерфейсом.The dispinterface does not exhibit the versioning problems described in ClassInterfaceAttribute because clients can only late-bind to the interface.

Это параметр по умолчанию для ClassInterfaceAttribute.This is the default setting for ClassInterfaceAttribute.

AutoDual AutoDual AutoDual AutoDual 2

Указывает, что для класса автоматически создается сдвоенный интерфейс класса, который предоставляется COM.Indicates that a dual class interface is automatically generated for the class and exposed to COM. Сведения о типе создаются для класса интерфейса и публикуются в библиотеке типов.Type information is produced for the class interface and published in the type library. Использование AutoDual крайне нежелательно из-за ограничений, связанных с версиями и описанных для атрибута ClassInterfaceAttribute.Using AutoDual is strongly discouraged because of the versioning limitations described in ClassInterfaceAttribute.

None None None None 0

Указывает, что для класса не создается интерфейса класса.Indicates that no class interface is generated for the class. Если интерфейсы не реализованы явно, класс может предоставить доступ только через позднее связывание при помощи интерфейса IDispatch.If no interfaces are implemented explicitly, the class can only provide late-bound access through the IDispatch interface. Это значение является рекомендованным для ClassInterfaceAttribute.This is the recommended setting for ClassInterfaceAttribute. Использование ClassInterfaceType.None — это единственный способ предоставления функциональных возможностей при помощи интерфейсов, явно реализованных классом.Using ClassInterfaceType.None is the only way to expose functionality through interfaces implemented explicitly by the class.

Примеры

В этом примере показано, как применить ClassInterfaceAttribute к типу, ClassInterfaceTypeустановив.This example shows how to apply the ClassInterfaceAttribute to a type, setting the ClassInterfaceType. Классы, определенные таким образом, можно использовать из неуправляемого 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

Комментарии

Это перечисление используется в сочетании с ClassInterfaceAttribute атрибутом.This enumeration is used in conjunction with the ClassInterfaceAttribute attribute.

Применяется к

Дополнительно