ClassInterfaceType Enumeración
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Identifica el tipo de interfaz de clase que se genera para una clase.
public enum class ClassInterfaceType
public enum ClassInterfaceType
[System.Serializable]
public enum ClassInterfaceType
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum ClassInterfaceType
type ClassInterfaceType =
[<System.Serializable>]
type ClassInterfaceType =
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type ClassInterfaceType =
Public Enum ClassInterfaceType
- Herencia
- Atributos
Campos
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 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 |
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
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 |
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.
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
Comentarios
Esta enumeración se usa junto con el ClassInterfaceAttribute atributo .