ManagedToNativeComInteropStubAttribute Třída

Definice

Poskytuje podporu pro přizpůsobení uživatelských zástupných procedur ve scénářích spolupráce spravovaných do modelu 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
Dědičnost
ManagedToNativeComInteropStubAttribute
Atributy

Poznámky

Tento atribut umožňuje vývojářům spolupracovníkům, kteří mají znalosti o zařazování a vnitřní práci volání vzájemné spolupráce, provádět následující akce:This attribute enables interop developers who have knowledge about marshaling and the inner workings of interop calls to do the following:

  • Využijte vlastní zástupné procedury Interop v době sestavení namísto doby běhu.Take advantage of customized interop stubs at build time instead of run time.

  • Ladit přizpůsobené zástupné procedury Interop.Debug customized interop stubs.

  • Poskytněte možnosti zařazování v rámci zástupné procedury, kterou modul runtime neposkytuje.Provide marshaling capabilities within a stub that the runtime does not provide.

  • Poskytněte možnosti odesílání metod specifických pro uživatele.Provide user-specific method dispatch capabilities.

Použijete atribut pro metodu v rozhraní k určení odpovídající metody zástupné procedury pro zprostředkovatele komunikace COM spravovaného na nativní.You apply the attribute on a method in an interface to specify a corresponding stub method for managed-to-native COM interop.

Pokud tento atribut je zjištěn během doby běhu, modul CLR (Common Language Runtime) dynamicky negeneruje zástupnou proceduru interoperability.If this attribute is encountered during run time, the common language runtime does not dynamically generate an interop stub. Místo toho vyvolá vlastní zástupnou proceduru, která byla vytvořena v čase sestavení.Instead, it invokes the custom stub that was created at build time.

ManagedToNativeComInteropStubAttribute Atribut má následující vlastnosti:The ManagedToNativeComInteropStubAttribute attribute has the following characteristics:

  • Atribut lze použít pouze pro metody z rozhraní, která jsou označena [ComImport].The attribute can be used only on methods from interfaces that are marked [ComImport]. Pokud je atribut použit na typy bez rozhraní, je ignorován modulem runtime.If the attribute is applied to non-interface types, it is ignored by the runtime.

  • Atribut lze použít pouze jednou u stejné metody v rozhraní.The attribute can be used only once on the same method in an interface. Pokud je použit více než jednou, kompilátor vygeneruje chybu duplicitního atributu.If it is used more than once, the compiler generates a duplicated attribute error.

  • Atribut není dědičný ze základního rozhraní.The attribute is not inheritable from a base interface. Odvozená rozhraní musí explicitně přiřadit atribut.Derived interfaces must explicitly assign the attribute.

  • Sestavení, které obsahuje metodu s atributem, musí obsahovat také přizpůsobený zástupnou proceduru.The assembly that contains the attributed method must also contain the customized stub.

Přetížené metody se zástupnými procedurami jsou platné.Overloaded stub methods are valid. I když zadáte pouze typ a název metody zástupné procedury, modul runtime zjistí odpovídající zástupnou proceduru.Although you specify only the type and the name of the stub method, the runtime will discover the corresponding stub. Provede to tak, že zkontroluje všechny argumenty metody rozhraní a pak provede úplné porovnání signatury pomocí explicitního this ukazatele.It does this by examining all the arguments on the interface method, and then performing full signature matching by using an explicit this pointer.

Je také možné, aby více metod v rozhraní sdílelo stejnou zástupnou metodu; Pokud ale používáte sdílené zástupné procedury, měli byste být opatrní.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.

Poznámka

Zástupné metody musí být statické.Stub methods must be static.

Můžete informovat modul runtime o použití přizpůsobeného zástupné procedury Interop v době sestavení namísto doby spuštění s C# následujícím kódem: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);  
}  

Pak můžete použít následující kód k deklarování odpovídající metody zástupné procedury:You could then use the following code to declare the corresponding stub method:

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

Konstruktory

ManagedToNativeComInteropStubAttribute(Type, String)

Inicializuje novou instanci ManagedToNativeComInteropStubAttribute třídy se zadaným typem třídy a názvem metody.Initializes a new instance of the ManagedToNativeComInteropStubAttribute class with the specified class type and method name.

Vlastnosti

ClassType

Získá třídu, která obsahuje požadovanou metodu zástupné procedury.Gets the class that contains the required stub method.

MethodName

Získá název metody zástupné procedury.Gets the name of the stub method.

TypeId

Při implementaci v odvozené třídě získá jedinečný identifikátor pro tento Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Zděděno od Attribute)

Metody

Equals(Object)

Vrací hodnotu, která určuje, zda je tato instance rovna zadanému objektu.Returns a value that indicates whether this instance is equal to a specified object.

(Zděděno od Attribute)
GetHashCode()

Vrátí kód hash této instance.Returns the hash code for this instance.

(Zděděno od Attribute)
GetType()

Type Získá aktuální instanci.Gets the Type of the current instance.

(Zděděno od Object)
IsDefaultAttribute()

Při přepsání v odvozené třídě označuje, zda je hodnota této instance výchozí hodnotou pro odvozenou třídu.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Zděděno od Attribute)
Match(Object)

Při přepsání v odvozené třídě vrátí hodnotu, která označuje, zda je tato instance rovna zadanému objektu.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Zděděno od Attribute)
MemberwiseClone()

Vytvoří kopii aktuálního Objectseznamu.Creates a shallow copy of the current Object.

(Zděděno od Object)
ToString()

Vrací řetězec, který představuje aktuální objekt.Returns a string that represents the current object.

(Zděděno od Object)

Explicitní implementace rozhraní

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

Mapuje sadu názvů na odpovídající sadu identifikátorů pro rozesílání.Maps a set of names to a corresponding set of dispatch identifiers.

(Zděděno od Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Načte informace o typu pro objekt, který lze použít k získání informací o typu pro rozhraní.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Zděděno od Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Získá počet rozhraní typu informací, které objekt poskytuje (0 nebo 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Zděděno od Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Poskytuje přístup k vlastnostem a metodám vystaveným objektem.Provides access to properties and methods exposed by an object.

(Zděděno od Attribute)

Platí pro