InterfaceTypeAttribute Clase
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í.
Indica si una interfaz administrada es dual, de sólo distribución o sólo IUnknown
cuando se expone a COM.
public ref class InterfaceTypeAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Interface, Inherited=false)]
public sealed class InterfaceTypeAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Interface, Inherited=false)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class InterfaceTypeAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Interface, Inherited=false)>]
type InterfaceTypeAttribute = class
inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Interface, Inherited=false)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type InterfaceTypeAttribute = class
inherit Attribute
Public NotInheritable Class InterfaceTypeAttribute
Inherits Attribute
- Herencia
- Atributos
Ejemplos
En el ejemplo siguiente se muestra cómo controla cómo InterfaceTypeAttribute
se expone la interfaz a COM.
using namespace System::Runtime::InteropServices;
//Interface is exposed to COM as dual.
interface class IMyInterface1{};
//Insert code here.
//Interface is exposed to COM as IDispatch.
[InterfaceTypeAttribute(ComInterfaceType::InterfaceIsIDispatch)]
interface class IMyInterface2{};
//Insert code here.
using System.Runtime.InteropServices;
//Interface is exposed to COM as dual.
interface IMyInterface1
{
//Insert code here.
}
//Interface is exposed to COM as IDispatch.
[InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)]
interface IMyInterface2
{
//Insert code here.
}
Imports System.Runtime.InteropServices
'Interface is exposed to COM as dual.
Interface IMyInterface1
'Insert code here.
End Interface
'Interface is exposed to COM as IDispatch.
<InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)> _
Interface IMyInterface2
'Insert code here.
End Interface
Comentarios
Puede aplicar este atributo a interfaces.
De forma predeterminada, el Tlbexp.exe (Exportador de biblioteca de tipos) expone una interfaz administrada a COM como una interfaz dual, lo que le proporciona la flexibilidad del enlace en tiempo de ejecución o el rendimiento del enlace anticipado. La ComInterfaceType enumeración permite invalidar el comportamiento predeterminado y especificar solo el enlace en tiempo de compilación o el enlace anticipado. Por ejemplo, puede aplicar InterfaceType (ComInterfaceType.InterfaceIsIDispatch)
a una interfaz para generar metadatos para restringir a los autores de llamadas solo al enlace en tiempo de ejecución. Aunque las interfaces que derivan de la IDispatch
interfaz suelen ser duales, el miembro de InterfaceIsIDispatch
enumeración solo permite llamadas enlazadas en tiempo de ejecución a los métodos de interfaz. Este atributo no tiene ningún efecto en la vista administrada de la interfaz. Para obtener más información sobre cómo se exponen las interfaces a COM, vea Conversión de tipos exportados.
El Tlbimp.exe (Importador de biblioteca de tipos) también aplica este atributo a las interfaces importadas y no duales; aplica el miembro de enumeración adecuado para indicar que la interfaz es solo de envío o IUnknown
-only.
Constructores
InterfaceTypeAttribute(ComInterfaceType) |
Inicializa una nueva instancia de la clase InterfaceTypeAttribute con el miembro de enumeración ComInterfaceType especificado. |
InterfaceTypeAttribute(Int16) |
Inicializa una nueva instancia de la clase InterfaceTypeAttribute con el miembro de enumeración ComInterfaceType especificado. |
Propiedades
TypeId |
Cuando se implementa en una clase derivada, obtiene un identificador único para este Attribute. (Heredado de Attribute) |
Value |
Obtiene el valor de ComInterfaceType que describe la forma en que la interfaz debe exponerse a COM. |
Métodos
Equals(Object) |
Devuelve un valor que indica si esta instancia es igual que un objeto especificado. (Heredado de Attribute) |
GetHashCode() |
Devuelve el código hash de esta instancia. (Heredado de Attribute) |
GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
IsDefaultAttribute() |
Si se reemplaza en una clase derivada, indica si el valor de esta instancia es el valor predeterminado de la clase derivada. (Heredado de Attribute) |
Match(Object) |
Cuando se invalida en una clase derivada, devuelve un valor que indica si esta instancia es igual a un objeto especificado. (Heredado de Attribute) |
MemberwiseClone() |
Crea una copia superficial del Object actual. (Heredado de Object) |
ToString() |
Devuelve una cadena que representa el objeto actual. (Heredado de Object) |
Implementaciones de interfaz explícitas
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Asigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío. (Heredado de Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Obtiene la información de tipos de un objeto, que puede utilizarse para obtener la información de tipos de una interfaz. (Heredado de Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
Recupera el número de interfaces de información de tipo que proporciona un objeto (0 ó 1). (Heredado de Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Proporciona acceso a las propiedades y los métodos expuestos por un objeto. (Heredado de Attribute) |