Compartilhar via


Enumeração ClassInterfaceType

 

Dica

The .NET API Reference documentation has a new home. Visit the .NET API Browser on docs.microsoft.com to see the new experience.

Identifica o tipo de interface de classe que é gerado para uma classe.

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

Sintaxe

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

Membros

Nome do membro Descrição
AutoDispatch

Indica que a classe só dá suporte à associação tardia para clientes COM. Um dispinterface para a classe é exposto automaticamente aos clientes COM na solicitação. A biblioteca de tipos produzida por Tlbexp.exe (Exportador da Biblioteca de Tipos) não contém informações de tipo para o dispinterface para evitar que os clientes armazenem em cache os DISPIDs da interface. O dispinterface não apresenta os problemas de controle de versão descritos em ClassInterfaceAttribute porque os clientes podem apenas fazer a associação tardia com a interface.

AutoDual

Indica que uma interface de classe dupla é automaticamente gerada para a classe e exposta a COM. Informações de tipo são geradas para a interface de classe e publicadas na biblioteca de tipos. Usar AutoDual não é recomendável devido a restrições de controle de versão descritas em ClassInterfaceAttribute.

None

Indica que nenhuma interface de classe é gerada para a classe. Se nenhuma interface for implementada explicitamente, a classe só poderá fornecer acesso de associação tardia por meio da interface IDispatch. Essa é a configuração recomendada para ClassInterfaceAttribute. Usar ClassInterfaceType.None é a única maneira de expor a funcionalidade por meio de interfaces explicitamente implementadas pela classe.

Comentários

Essa enumeração é usada em conjunto com o ClassInterfaceAttribute atributo.

Exemplos

Este exemplo mostra como aplicar o ClassInterfaceAttribute para um tipo de configuração de ClassInterfaceType. Classes definidas dessa maneira podem ser usados em COM. não gerenciado

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

Informações de Versão

Plataforma Universal do Windows
Disponível desde 8
.NET Framework
Disponível desde 1.1
Biblioteca de Classes Portátil
Com suporte no: plataformas portáteis do .NET
Silverlight
Disponível desde 2.0
Windows Phone Silverlight
Disponível desde 7.0
Windows Phone
Disponível desde 8.1

Confira Também

Namespace System.Runtime.InteropServices
Tlbexp.exe (Exportador de Biblioteca de Tipos)

Retornar ao início