Ler en inglés

Compartir por


ClassInterfaceType Enumeración

Definición

Identifica el tipo de interfaz de clase que se genera para una clase.

C#
public enum ClassInterfaceType
C#
[System.Serializable]
public enum ClassInterfaceType
C#
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum ClassInterfaceType
Herencia
ClassInterfaceType
Atributos

Campos

Nombre Valor Description
AutoDispatch 1

Indica que la clase sólo admite enlaces en tiempo de ejecución para los clientes COM. Si se solicita, se expone automáticamente a los clientes COM una interfaz dispinterface para la clase. La biblioteca de tipos creada por Tlbexp.exe (exportador de la biblioteca de tipos) no contiene información de tipos para la interfaz dispinterface con el fin de impedir que los clientes almacenen en memoria caché los DISPID de la interfaz. La interfaz dispinterface no presenta los problemas de control de versiones descritos en ClassInterfaceAttribute, ya que los clientes solo se pueden enlazar a la interfaz en tiempo de ejecución.

Esta es la configuración predeterminada de ClassInterfaceAttribute.

AutoDual 2

Indica que se genera una interfaz de clase dual para la clase y se expone a COM automáticamente. Se genera la información de tipos para la interfaz de clase y se publica en la biblioteca de tipos. Se desaconseja el uso de AutoDual debido a las limitaciones de las versiones descritas en ClassInterfaceAttribute.

None 0

Indica que no se genera ninguna interfaz de clase para la clase. Si no se implementan interfaces explícitamente, la clase solo proporcionará acceso de enlace en tiempo de ejecución a través de la interfaz IDispatch. Éste es el valor recomendado para ClassInterfaceAttribute. La utilización de ClassInterfaceType.None es la única manera de exponer funcionalidad a través de interfaces implementadas explícitamente por la clase.

Tlbexp.exe (exportador de biblioteca de tipos) expone la primera interfaz pública visible para COM implementada por la clase como interfaz predeterminada de la coclase. En .NET Framework 2.0 y versiones posteriores, puede especificar la interfaz predeterminada expuesta a COM mediante el uso del atributo ComDefaultInterfaceAttribute. Si la clase no implementa ninguna interfaz, la interfaz predeterminada será la primera pública y visible para COM implementada por una clase base (empezando por la clase base derivada más recientemente y en orden inverso). Si ni la clase ni las clases base implementan ninguna interfaz, Tlbexp.exe expone _Object como interfaz predeterminada.

Ejemplos

En este ejemplo se muestra cómo aplicar a ClassInterfaceAttribute un tipo, estableciendo .ClassInterfaceType Las clases definidas de esta manera se pueden usar desde COM no administrado.

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

Comentarios

Esta enumeración se usa junto con el ClassInterfaceAttribute atributo .

Se aplica a

Produto Versións
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Consulte también