ManagedToNativeComInteropStubAttribute ManagedToNativeComInteropStubAttribute ManagedToNativeComInteropStubAttribute ManagedToNativeComInteropStubAttribute Class

Definición

Proporciona compatibilidad con la personalización del usuario de código auxiliar de interoperabilidad en escenarios de administrado a interoperabilidad COM.Provides support for user customization of interop stubs in managed-to-COM interop scenarios.

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

Comentarios

Este atributo permite a los desarrolladores de interoperabilidad que tengan conocimientos acerca de la serialización y el funcionamiento interno de las llamadas de interoperabilidad para hacer lo siguiente:This attribute enables interop developers who have knowledge about marshaling and the inner workings of interop calls to do the following:

  • Aprovechar las ventajas del código auxiliar de interoperabilidad personalizado en tiempo de compilación en lugar de tiempo de ejecución.Take advantage of customized interop stubs at build time instead of run time.

  • Depuración del código auxiliar de interoperabilidad personalizado.Debug customized interop stubs.

  • Proporcione capacidades de cálculo de referencias dentro de un código auxiliar que no se proporciona el tiempo de ejecución.Provide marshaling capabilities within a stub that the runtime does not provide.

  • Proporcionan funcionalidades de envío del método específico del usuario.Provide user-specific method dispatch capabilities.

Aplique el atributo en un método en una interfaz para especificar un método de código auxiliar correspondiente para la interoperabilidad de COM administrado a nativo.You apply the attribute on a method in an interface to specify a corresponding stub method for managed-to-native COM interop.

Si este atributo se encuentra durante el tiempo de ejecución, common language runtime no genera dinámicamente un código auxiliar de interoperabilidad.If this attribute is encountered during run time, the common language runtime does not dynamically generate an interop stub. En su lugar, invoca el código auxiliar personalizado que se creó en tiempo de compilación.Instead, it invokes the custom stub that was created at build time.

El ManagedToNativeComInteropStubAttribute atributo tiene las siguientes características:The ManagedToNativeComInteropStubAttribute attribute has the following characteristics:

  • El atributo se puede usar únicamente en los métodos de interfaces que se marcan [ComImport].The attribute can be used only on methods from interfaces that are marked [ComImport]. Si el atributo se aplica a tipos no sea de interfaz, se omite el tiempo de ejecución.If the attribute is applied to non-interface types, it is ignored by the runtime.

  • El atributo se puede usar una sola vez en el mismo método en una interfaz.The attribute can be used only once on the same method in an interface. Si se usa más de una vez, el compilador genera un error de atributo duplicado.If it is used more than once, the compiler generates a duplicated attribute error.

  • El atributo no es heredable de una interfaz base.The attribute is not inheritable from a base interface. Las interfaces derivadas deben asignar explícitamente el atributo.Derived interfaces must explicitly assign the attribute.

  • El ensamblado que contiene el método con atributos también debe contener el código auxiliar personalizado.The assembly that contains the attributed method must also contain the customized stub.

Métodos de código auxiliar sobrecargados son válidos.Overloaded stub methods are valid. Aunque se especifique solo el tipo y el nombre del método de código auxiliar, el tiempo de ejecución detectará el código auxiliar correspondiente.Although you specify only the type and the name of the stub method, the runtime will discover the corresponding stub. Esto hace examinando todos los argumentos en el método de interfaz y, a continuación, realizar la firma completa mediante el uso de explícita this puntero.It does this by examining all the arguments on the interface method, and then performing full signature matching by using an explicit this pointer.

También es posible que varios métodos en una interfaz para compartir el mismo método de código auxiliar; Sin embargo, se debe tener cuidado al usar códigos auxiliares compartidos.It is also possible for multiple methods in an interface to share the same stub method; however, you should be careful when you use shared stubs.

Nota

Los métodos auxiliares deben ser estáticos.Stub methods must be static.

Podría indicar al runtime para usar un código auxiliar de interoperabilidad personalizado en tiempo de compilación en lugar de tiempo de ejecución con el siguiente código de C#:You could inform the runtime to use a customized interop stub at build time instead of run time with the following C# code:

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

A continuación, podría utilizar el siguiente código para declarar el método de código auxiliar correspondiente:You could then use the following code to declare the corresponding stub method:

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

Constructores

ManagedToNativeComInteropStubAttribute(Type, String) ManagedToNativeComInteropStubAttribute(Type, String) ManagedToNativeComInteropStubAttribute(Type, String) 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.Initializes a new instance of the ManagedToNativeComInteropStubAttribute class with the specified class type and method name.

Propiedades

ClassType ClassType ClassType ClassType

Obtiene la clase que contiene el método de código auxiliar necesario.Gets the class that contains the required stub method.

MethodName MethodName MethodName MethodName

Obtiene el nombre del método de código auxiliar.Gets the name of the stub method.

TypeId TypeId TypeId TypeId

Cuando se implementa en una clase derivada, obtiene un identificador único para este Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Inherited from Attribute)

Métodos

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Devuelve un valor que indica si esta instancia es igual que un objeto especificado.Returns a value that indicates whether this instance is equal to a specified object.

(Inherited from Attribute)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Devuelve el código hash de esta instancia.Returns the hash code for this instance.

(Inherited from Attribute)
GetType() GetType() GetType() GetType()

Obtiene el Type de la instancia actual.Gets the Type of the current instance.

(Inherited from Object)
IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute()

Si se reemplaza en una clase derivada, indica si el valor de esta instancia es el valor predeterminado de la clase derivada.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Inherited from Attribute)
Match(Object) Match(Object) Match(Object) Match(Object)

Cuando se invalida en una clase derivada, devuelve un valor que indica si esta instancia es igual a un objeto especificado.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Inherited from Attribute)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Crea una copia superficial del objeto Object actual.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Devuelve una cadena que representa el objeto actual.Returns a string that represents the current object.

(Inherited from Object)

Implementaciones de interfaz explícitas

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Asigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío.Maps a set of names to a corresponding set of dispatch identifiers.

(Inherited from Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _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.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Inherited from Attribute)
_Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32)

Recupera el número de interfaces de información de tipo que proporciona un objeto (0 ó 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Inherited from Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Proporciona acceso a las propiedades y los métodos expuestos por un objeto.Provides access to properties and methods exposed by an object.

(Inherited from Attribute)

Se aplica a