Aplicar atributos de interoperabilidad

El espacio de nombres System.Runtime.InteropServices proporciona tres categorías de atributos específicos de interoperabilidad: los que se aplican por parte del usuario en tiempo de diseño, los que se aplican mediante herramientas de interoperabilidad COM y durante el proceso de conversión, y los que se aplican por parte del usuario o interoperabilidad COM.

Si no está familiarizado con la tarea de aplicar atributos al código administrado, vea Extender metadatos mediante atributos. Al igual que otros atributos personalizados, puede aplicar atributos específicos de interoperabilidad a tipos, métodos, propiedades, parámetros, campos y otros miembros.

Atributos en tiempo de diseño

Puede ajustar el resultado del proceso de conversión realizado por las API y las herramientas de interoperabilidad COM mediante atributos en tiempo de diseño. En la tabla siguiente se describen los atributos que se pueden aplicar al código fuente administrado. En ocasiones, es posible que las herramientas de interoperabilidad COM también apliquen los atributos descritos en esta tabla.

Atributo Descripción
AutomationProxyAttribute Especifica si el tipo debe serializarse mediante el contador de referencias de Automation o un proxy personalizado y código auxiliar.
ClassInterfaceAttribute Controla el tipo de interfaz generada para una clase.
CoClassAttribute Identifica el CLSID de la coclase original importada desde una biblioteca de tipos.

Las herramientas de interoperabilidad COM aplican normalmente este atributo.
ComImportAttribute Indica que una definición de interfaz o coclase se importó desde una biblioteca de tipos COM. El tiempo de ejecución usa este indicador para saber cómo activar y serializar el tipo. Este atributo prohíbe que el tipo se vuelva a exportar a una biblioteca de tipos.

Las herramientas de interoperabilidad COM aplican normalmente este atributo.
ComRegisterFunctionAttribute Indica que debe llamarse a un método cuando el ensamblado se registra para su uso desde COM, por lo que se puede ejecutar código escrito por el usuario durante el proceso de registro.
ComSourceInterfacesAttribute Identifica las interfaces que son orígenes de eventos para la clase.

Las herramientas de interoperabilidad COM pueden aplicar este atributo.
ComUnregisterFunctionAttribute Indica que debe llamarse a un método cuando se anula el registro del ensamblado desde COM, para que se pueda ejecutar código escrito por el usuario durante el proceso.
ComVisibleAttribute Representa tipos visibles para COM cuando el valor del atributo es igual a false. Este atributo se puede aplicar a un tipo individual o a un ensamblado completo para controlar la visibilidad de COM. De forma predeterminada, todos los tipos públicos son visibles; no se necesita el atributo para hacerlos visibles.
DispIdAttribute Especifica el identificador de envío (DISPID) de COM de un método o campo. Este atributo contiene el DISPID para el método, campo o propiedad que describe.

Las herramientas de interoperabilidad COM pueden aplicar este atributo.
ComDefaultInterfaceAttribute Indica la interfaz predeterminada para una clase COM implementada en .NET.

Las herramientas de interoperabilidad COM pueden aplicar este atributo.
FieldOffsetAttribute Indica la posición física de cada campo dentro de una clase cuando se usa con StructLayoutAttribute, y LayoutKind se establece en Explicit.
GuidAttribute Especifica el identificador único global (GUID) de una clase, interfaz o una biblioteca de tipos completa. La cadena que se pasa al atributo debe tener un formato que sea un argumento de constructor aceptable para el tipo de System.Guid.

Las herramientas de interoperabilidad COM pueden aplicar este atributo.
IDispatchImplAttribute Indica la implementación de la interfaz IDispatch que usa el Common Language Runtime cuando expone interfaces duales e interfaces dispinterface a COM.
InAttribute Indica que los datos se deben serializar en el llamador. Se puede usar para parámetros de atributo.
InterfaceTypeAttribute Controla la forma en que se expone una interfaz administrada a los clientes COM (Dual, derivada de IUnknown o solo IDispatch).

Las herramientas de interoperabilidad COM pueden aplicar este atributo.
LCIDConversionAttribute Indica que una firma de método no administrado espera un parámetro LCID.

Las herramientas de interoperabilidad COM pueden aplicar este atributo.
MarshalAsAttribute Indica cómo se deben serializar los datos de campos o parámetros entre código administrado y no administrado. El atributo siempre es opcional porque cada tipo de datos tiene el comportamiento de serialización predeterminado.

Las herramientas de interoperabilidad COM pueden aplicar este atributo.
OptionalAttribute Indica que un parámetro es opcional.

Las herramientas de interoperabilidad COM pueden aplicar este atributo.
OutAttribute Indica que los datos de un campo o parámetro deben serializarse desde un objeto que se llama a su llamador.
PreserveSigAttribute Suprime la transformación de la firma retval o del valor HRESULT que normalmente tiene lugar durante las llamadas de interoperabilidad. El atributo afecta a la serialización, así como a la exportación de bibliotecas de tipos.

Las herramientas de interoperabilidad COM pueden aplicar este atributo.
ProgIdAttribute Especifica el valor ProgID de una clase de .NET. Se puede usar para clases de atributos.
StructLayoutAttribute Controla el diseño físico de los campos de una clase.

Las herramientas de interoperabilidad COM pueden aplicar este atributo.

Atributos de la herramienta de conversión

En la tabla siguiente se describen los atributos que las herramientas de interoperabilidad COM aplican durante el proceso de conversión. Estos atributos no se aplican en tiempo de diseño.

Atributo Descripción
ComAliasNameAttribute Indica el alias COM de un parámetro o tipo de campo. Puede usarse para parámetros de atributo, campos o valores devueltos.
ComConversionLossAttribute Indica que se perdió la información sobre una clase o interfaz cuando se importó desde una biblioteca de tipos a un ensamblado.
ComEventInterfaceAttribute Identifica la interfaz de origen y la clase que implementa los métodos de la interfaz de eventos.
ImportedFromTypeLibAttribute Indica que el ensamblado se importó originalmente desde una biblioteca de tipos COM. Este atributo contiene la definición de biblioteca de tipos de la biblioteca de tipos original.
TypeLibFuncAttribute Contiene los FUNCFLAGS que se importaron originalmente para esta función desde la biblioteca de tipos COM.
TypeLibTypeAttribute Contiene los TYPEFLAGS que se importaron originalmente para este tipo desde la biblioteca de tipos COM.
TypeLibVarAttribute Contiene los VARFLAGS que se importaron originalmente para esta variable desde la biblioteca de tipos COM.

Vea también