ManagedToNativeComInteropStubAttribute Classe

Definizione

Fornisce supporto per la personalizzazione dell'utente di stub di interoperabilità negli scenari di interoperabilità da gestito a 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
Ereditarietà
ManagedToNativeComInteropStubAttribute
Attributi

Commenti

Questo attributo consente agli sviluppatori di interoperabilità di conoscere il marshalling e le operazioni interne delle chiamate di interoperabilità per eseguire le operazioni seguenti:

  • Sfruttare gli stub di interoperabilità personalizzati in fase di compilazione anziché il tempo di esecuzione.

  • Eseguire il debug di stub di interoperabilità personalizzati.

  • Fornire funzionalità di marshalling all'interno di uno stub che il runtime non fornisce.

  • Fornire funzionalità di invio di metodi specifici dell'utente.

Si applica l'attributo in un metodo in un'interfaccia per specificare un metodo stub corrispondente per l'interoperabilità COM gestita a nativa.

Se questo attributo viene rilevato durante l'esecuzione, Common Language Runtime non genera dinamicamente uno stub di interoperabilità. Richiama invece lo stub personalizzato creato in fase di compilazione.

L'attributo ManagedToNativeComInteropStubAttribute presenta le caratteristiche seguenti:

  • L'attributo può essere usato solo sui metodi delle interfacce contrassegnate [ComImport]da . Se l'attributo viene applicato ai tipi non di interfaccia, viene ignorato dal runtime.

  • L'attributo può essere usato una sola volta nello stesso metodo in un'interfaccia. Se viene usato più volte, il compilatore genera un errore di attributo duplicato.

  • L'attributo non è ereditabile da un'interfaccia di base. Le interfacce derivate devono assegnare in modo esplicito l'attributo.

  • L'assembly che contiene il metodo con attributi deve contenere anche lo stub personalizzato.

I metodi stub di overload sono validi. Anche se si specifica solo il tipo e il nome del metodo stub, il runtime individua lo stub corrispondente. Questa operazione viene eseguita esaminando tutti gli argomenti del metodo di interfaccia e quindi eseguendo la corrispondenza completa delle firme usando un puntatore esplicito this .

È anche possibile che più metodi in un'interfaccia condividono lo stesso metodo stub; tuttavia, è consigliabile prestare attenzione quando si usano stub condivisi.

Nota

I metodi Stub devono essere statici.

È possibile informare il runtime di usare uno stub di interoperabilità personalizzato in fase di compilazione anziché il codice C# seguente:

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

È quindi possibile usare il codice seguente per dichiarare il metodo stub corrispondente:

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

Costruttori

ManagedToNativeComInteropStubAttribute(Type, String)

Inizializza una nuova istanza della classe ManagedToNativeComInteropStubAttribute con il nome di metodo e il tipo di classe specificati.

Proprietà

ClassType

Ottiene la classe che contiene il metodo stub richiesto.

MethodName

Ottiene il nome del metodo stub.

TypeId

Quando è implementata in una classe derivata, ottiene un identificatore univoco della classe Attribute.

(Ereditato da Attribute)

Metodi

Equals(Object)

Restituisce un valore che indica se questa istanza è uguale a un oggetto specificato.

(Ereditato da Attribute)
GetHashCode()

Restituisce il codice hash per l'istanza.

(Ereditato da Attribute)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
IsDefaultAttribute()

In caso di override in una classe derivata, indica se il valore di questa istanza è il valore predefinito per la classe derivata.

(Ereditato da Attribute)
Match(Object)

Quando è sottoposto a override in una classe derivata, restituisce un valore che indica se questa istanza equivale a un oggetto specificato.

(Ereditato da Attribute)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

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

Esegue il mapping di un set di nomi a un set corrispondente di ID dispatch.

(Ereditato da Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera le informazioni sul tipo relative a un oggetto, che possono essere usate per ottenere informazioni sul tipo relative a un'interfaccia.

(Ereditato da Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Recupera il numero delle interfacce di informazioni sul tipo fornite da un oggetto (0 o 1).

(Ereditato da Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fornisce l'accesso a proprietà e metodi esposti da un oggetto.

(Ereditato da Attribute)

Si applica a