Compartilhar via


ManagedToNativeComInteropStubAttribute Classe

Definição

Dá suporte para personalização do usuário de stubs de interoperabilidade em cenários de interoperabilidade gerenciada para 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
Herança
ManagedToNativeComInteropStubAttribute
Atributos

Comentários

Esse atributo permite que os desenvolvedores de interoperabilidade que têm conhecimento sobre marshaling e o funcionamento interno de chamadas de interoperabilidade façam o seguinte:

  • Aproveite os stubs de interoperabilidade personalizados no tempo de build em vez do tempo de execução.

  • Depurar stubs de interoperabilidade personalizados.

  • Forneça recursos de marshaling dentro de um stub que o runtime não fornece.

  • Forneça recursos de expedição de método específicos do usuário.

Você aplica o atributo em um método em uma interface para especificar um método stub correspondente para interoperabilidade COM gerenciada para nativa.

Se esse atributo for encontrado durante o tempo de execução, o Common Language Runtime não gerará dinamicamente um stub de interoperabilidade. Em vez disso, ele invoca o stub personalizado que foi criado no momento da compilação.

O ManagedToNativeComInteropStubAttribute atributo tem as seguintes características:

  • O atributo só pode ser usado em métodos de interfaces marcadas como [ComImport]. Se o atributo for aplicado a tipos que não são de interface, ele será ignorado pelo runtime.

  • O atributo pode ser usado apenas uma vez no mesmo método em uma interface. Se for usado mais de uma vez, o compilador gerará um erro de atributo duplicado.

  • O atributo não é herdável de uma interface base. As interfaces derivadas devem atribuir explicitamente o atributo.

  • O assembly que contém o método atribuído também deve conter o stub personalizado.

Os métodos stub sobrecarregados são válidos. Embora você especifique apenas o tipo e o nome do método stub, o runtime descobrirá o stub correspondente. Ele faz isso examinando todos os argumentos no método de interface e, em seguida, executando a correspondência de assinatura completa usando um ponteiro explícito this .

Também é possível que vários métodos em uma interface compartilhem o mesmo método stub; no entanto, você deve ter cuidado ao usar stubs compartilhados.

Observação

Os métodos stub devem ser estáticos.

Você pode informar o runtime para usar um stub de interoperabilidade personalizado no tempo de build em vez de em tempo de execução com o seguinte código C#:

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

Em seguida, você pode usar o seguinte código para declarar o método stub correspondente:

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

Construtores

ManagedToNativeComInteropStubAttribute(Type, String)

Inicializa uma nova instância da classe ManagedToNativeComInteropStubAttribute com o nome do método e o tipo de classe especificados.

Propriedades

ClassType

Obtém a classe que contém o método de stub necessário.

MethodName

Obtém o nome do método de stub.

TypeId

Quando implementado em uma classe derivada, obtém um identificador exclusivo para este Attribute.

(Herdado de Attribute)

Métodos

Equals(Object)

Retorna um valor que indica se essa instância é igual a um objeto especificado.

(Herdado de Attribute)
GetHashCode()

Retorna o código hash para a instância.

(Herdado de Attribute)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
IsDefaultAttribute()

Quando substituído em uma classe derivada, indica se o valor dessa instância é o valor padrão para a classe derivada.

(Herdado de Attribute)
Match(Object)

Quando substituído em uma classe derivada, retorna um valor que indica se essa instância é igual a um objeto especificado.

(Herdado de Attribute)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Implantações explícitas de interface

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

Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de expedição.

(Herdado de Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera as informações de tipo para um objeto, que pode ser usado para obter as informações de tipo para uma interface.

(Herdado de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Retorna o número de interfaces de informações do tipo que um objeto fornece (0 ou 1).

(Herdado de Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fornece acesso a propriedades e métodos expostos por um objeto.

(Herdado de Attribute)

Aplica-se a