ManagedToNativeComInteropStubAttribute Classe

Definizione

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

Commenti

Questo attributo consente agli sviluppatori di interoperabilità che conoscono il marshalling e il funzionamento interno delle chiamate di interoperabilità di eseguire le operazioni seguenti:This attribute enables interop developers who have knowledge about marshaling and the inner workings of interop calls to do the following:

  • Sfrutta i vantaggi degli stub di interoperabilità personalizzati in fase di compilazione anziché in fase di esecuzione.Take advantage of customized interop stubs at build time instead of run time.

  • Eseguire il debug di stub di interoperabilità personalizzati.Debug customized interop stubs.

  • Fornire funzionalità di marshalling in uno stub non fornito dal runtime.Provide marshaling capabilities within a stub that the runtime does not provide.

  • Fornire funzionalità di invio di metodi specifiche dell'utente.Provide user-specific method dispatch capabilities.

L'attributo viene applicato a un metodo in un'interfaccia per specificare un metodo stub corrispondente per l'interoperabilità COM da gestito a nativo.You apply the attribute on a method in an interface to specify a corresponding stub method for managed-to-native COM interop.

Se questo attributo viene rilevato in fase di esecuzione, il Common Language Runtime non genera in modo dinamico uno stub di interoperabilità.If this attribute is encountered during run time, the common language runtime does not dynamically generate an interop stub. Richiama invece lo stub personalizzato che è stato creato in fase di compilazione.Instead, it invokes the custom stub that was created at build time.

L' ManagedToNativeComInteropStubAttribute attributo presenta le caratteristiche seguenti:The ManagedToNativeComInteropStubAttribute attribute has the following characteristics:

  • L'attributo può essere utilizzato solo su metodi di interfacce contrassegnate [ComImport]come.The attribute can be used only on methods from interfaces that are marked [ComImport]. Se l'attributo viene applicato a tipi non di interfaccia, viene ignorato dal runtime.If the attribute is applied to non-interface types, it is ignored by the runtime.

  • L'attributo può essere utilizzato una sola volta nello stesso metodo in un'interfaccia.The attribute can be used only once on the same method in an interface. Se viene usato più di una volta, il compilatore genera un errore di attributo duplicato.If it is used more than once, the compiler generates a duplicated attribute error.

  • L'attributo non è ereditabile da un'interfaccia di base.The attribute is not inheritable from a base interface. Le interfacce derivate devono assegnare in modo esplicito l'attributo.Derived interfaces must explicitly assign the attribute.

  • L'assembly che contiene il metodo con attributi deve contenere anche lo stub personalizzato.The assembly that contains the attributed method must also contain the customized stub.

I metodi stub di overload sono validi.Overloaded stub methods are valid. Sebbene vengano specificati solo il tipo e il nome del metodo stub, il runtime individuerà lo stub corrispondente.Although you specify only the type and the name of the stub method, the runtime will discover the corresponding stub. Questa operazione viene eseguita esaminando tutti gli argomenti nel metodo di interfaccia ed eseguendo quindi la corrispondenza completa della firma utilizzando un puntatore this esplicito.It does this by examining all the arguments on the interface method, and then performing full signature matching by using an explicit this pointer.

È anche possibile che più metodi in un'interfaccia condividano lo stesso metodo stub; Tuttavia, è necessario prestare attenzione quando si usano gli stub condivisi.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

I metodi stub devono essere statici.Stub methods must be static.

È possibile informare il runtime di usare uno stub di interoperabilità personalizzato in fase di compilazione anziché in fase C# di esecuzione con il codice seguente: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);  
}  

È quindi possibile usare il codice seguente per dichiarare il metodo stub corrispondente:You could then use the following code to declare the corresponding stub method:

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

Proprietà

ClassType

Ottiene la classe che contiene il metodo stub richiesto.Gets the class that contains the required stub method.

MethodName

Ottiene il nome del metodo stub.Gets the name of the stub method.

TypeId

Quando è implementata in una classe derivata, ottiene un identificatore univoco della classe Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Ereditato da Attribute)

Metodi

Equals(Object)

Restituisce un valore che indica se questa istanza è uguale a un oggetto specificato.Returns a value that indicates whether this instance is equal to a specified object.

(Ereditato da Attribute)
GetHashCode()

Restituisce il codice hash per l'istanza.Returns the hash code for this instance.

(Ereditato da Attribute)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

(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.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(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.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Ereditato da Attribute)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.Returns a string that represents the current object.

(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.Maps a set of names to a corresponding set of dispatch identifiers.

(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.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Ereditato da Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Recupera il numero delle interfacce di informazioni sul tipo fornite da un oggetto (0 o 1).Retrieves the number of type information interfaces that an object provides (either 0 or 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.Provides access to properties and methods exposed by an object.

(Ereditato da Attribute)

Si applica a