ManagedToNativeComInteropStubAttribute Clase

Definición

Proporciona compatibilidad con la personalización del usuario de código auxiliar de interoperabilidad en escenarios de administrado a interoperabilidad COM.

public ref class ManagedToNativeComInteropStubAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Method, AllowMultiple=false, Inherited=false)]
public sealed class ManagedToNativeComInteropStubAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Method, Inherited=false)]
public sealed class ManagedToNativeComInteropStubAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Method, AllowMultiple=false, Inherited=false)]
[System.Runtime.InteropServices.ComVisible(false)]
public sealed class ManagedToNativeComInteropStubAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Method, AllowMultiple=false, Inherited=false)>]
type ManagedToNativeComInteropStubAttribute = class
    inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Method, Inherited=false)>]
type ManagedToNativeComInteropStubAttribute = class
    inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Method, AllowMultiple=false, Inherited=false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
type ManagedToNativeComInteropStubAttribute = class
    inherit Attribute
Public NotInheritable Class ManagedToNativeComInteropStubAttribute
Inherits Attribute
Herencia
ManagedToNativeComInteropStubAttribute
Atributos

Comentarios

Este atributo permite a los desarrolladores de interoperabilidad que tienen conocimientos sobre serialización y el funcionamiento interno de las llamadas de interoperabilidad para hacer lo siguiente:

  • Aproveche los códigos auxiliares de interoperabilidad personalizados en tiempo de compilación en lugar del tiempo de ejecución.

  • Depuración de códigos auxiliares de interoperabilidad personalizados.

  • Proporcione funcionalidades de serialización dentro de un código auxiliar que el tiempo de ejecución no proporcione.

  • Proporcionar funcionalidades de distribución de métodos específicas del usuario.

El atributo se aplica en un método de una interfaz para especificar un método de código auxiliar correspondiente para la interoperabilidad COM administrada a nativa.

Si se encuentra este atributo durante el tiempo de ejecución, Common Language Runtime no genera dinámicamente un código auxiliar de interoperabilidad. En su lugar, invoca el código auxiliar personalizado que se creó en tiempo de compilación.

El ManagedToNativeComInteropStubAttribute atributo tiene las siguientes características:

  • El atributo solo se puede usar en métodos de interfaces marcadas como [ComImport]. Si el atributo se aplica a tipos que no son de interfaz, el tiempo de ejecución lo omite.

  • El atributo solo se puede usar una vez en el mismo método de una interfaz. Si se usa más de una vez, el compilador genera un error de atributo duplicado.

  • El atributo no se puede heredar de una interfaz base. Las interfaces derivadas deben asignar explícitamente el atributo .

  • El ensamblado que contiene el método con atributos también debe contener el código auxiliar personalizado.

Los métodos de código auxiliar sobrecargados son válidos. Aunque solo especifique el tipo y el nombre del método de código auxiliar, el tiempo de ejecución detectará el código auxiliar correspondiente. Para ello, examina todos los argumentos del método de interfaz y, a continuación, realiza la coincidencia completa de firmas mediante un puntero explícito this .

También es posible que varios métodos de una interfaz compartan el mismo método de código auxiliar; sin embargo, debe tener cuidado al usar códigos auxiliares compartidos.

Nota

Los métodos de código auxiliar deben ser estáticos.

Puede informar al tiempo de ejecución para usar un código auxiliar de interoperabilidad personalizado en tiempo de compilación en lugar de tiempo de ejecución con el código de C# siguiente:

[ComImport]  
interface IMyInterface  
{  
    [ManagedToNativeComInteropStubAttribute(typeof(TestStubClass),  
              "ForwardTestStub")]  
    void GetString (string arg);  
}  

Después, puede usar el código siguiente para declarar el método de código auxiliar correspondiente:

class TestStubClass  
{  
    internal static void ForwardTestStub(IMyInterface thisObject,  
             string arg) {…}  
}  

Constructores

ManagedToNativeComInteropStubAttribute(Type, String)

Inicializa una nueva instancia de la clase ManagedToNativeComInteropStubAttribute con el tipo de clase y el nombre del método que se hayan especificado.

Propiedades

ClassType

Obtiene la clase que contiene el método de código auxiliar necesario.

MethodName

Obtiene el nombre del método de código auxiliar.

TypeId

Cuando se implementa en una clase derivada, obtiene un identificador único para este Attribute.

(Heredado de Attribute)

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)

Se aplica a