ClassInterfaceType Enumerazione

Definizione

Identifica il tipo di interfaccia di classe generata per una classe.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
Ereditarietà
ClassInterfaceType
Attributi

Campi

AutoDispatch 1

Indica che la classe supporta solo l'associazione tardiva dei client COM.Indicates that the class only supports late binding for COM clients. Una dispinterface per la classe viene esposta automaticamente ai client COM su richiesta.A dispinterface for the class is automatically exposed to COM clients on request. La libreria dei tipi prodotta da Tlbexp.exe (utilità di esportazione della libreria dei tipi) non contiene informazioni sui tipi per dispinterface allo scopo di impedire ai client di memorizzare nella cache i DISPID dell'interfaccia.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. La dispinterface non mostra i problemi di controllo delle versioni descritti in ClassInterfaceAttribute perché i client possono eseguire soltanto l'associazione tardiva all'interfaccia.The dispinterface does not exhibit the versioning problems described in ClassInterfaceAttribute because clients can only late-bind to the interface.

Questa è l'impostazione predefinita per ClassInterfaceAttribute.This is the default setting for ClassInterfaceAttribute.

AutoDual 2

Indica che un'interfaccia di classe duale viene generata automaticamente per la classe ed esposta a COM.Indicates that a dual class interface is automatically generated for the class and exposed to COM. Le informazioni sul tipo sono prodotte per l'interfaccia di classe e pubblicate nella libreria dei tipi.Type information is produced for the class interface and published in the type library. L'utilizzo di AutoDual è fortemente sconsigliato a causa delle limitazioni nel controllo delle versioni descritte in ClassInterfaceAttribute.Using AutoDual is strongly discouraged because of the versioning limitations described in ClassInterfaceAttribute.

None 0

Indica che per la classe non viene generata alcuna interfaccia di classe.Indicates that no class interface is generated for the class. Se nessuna interfaccia viene implementata in modo esplicito, la classe può fornire solo accesso ad associazione tardiva tramite l'interfaccia IDispatch.If no interfaces are implemented explicitly, the class can only provide late-bound access through the IDispatch interface. Si tratta dell'impostazione consigliata per ClassInterfaceAttribute.This is the recommended setting for ClassInterfaceAttribute. L'utilizzo di ClassInterfaceType.None è l'unico modo per l'esporre la funzionalità tramite interfacce implementate in modo esplicito dalla classe.Using ClassInterfaceType.None is the only way to expose functionality through interfaces implemented explicitly by the class.

Esempi

Questo esempio illustra come applicare ClassInterfaceAttribute a un tipo, ClassInterfaceTypeimpostando.This example shows how to apply the ClassInterfaceAttribute to a type, setting the ClassInterfaceType. Le classi definite in questo modo possono essere utilizzate da COM non gestito.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

Commenti

Questa enumerazione viene utilizzata insieme ClassInterfaceAttribute all'attributo.This enumeration is used in conjunction with the ClassInterfaceAttribute attribute.

Si applica a

Vedi anche