ManagedToNativeComInteropStubAttribute Classe

Définition

Prend en charge la personnalisation par l'utilisateur des stubs d'interopérabilité dans les scénarios COM Interop managés.

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
Héritage
ManagedToNativeComInteropStubAttribute
Attributs

Remarques

Cet attribut permet aux développeurs interopérabilité qui ont des connaissances sur le marshaling et les fonctionnements internes des appels d’interopérabilité pour effectuer les opérations suivantes :

  • Tirez parti des stubs d’interopérabilité personnalisés au moment de la génération au lieu de l’exécution.

  • Déboguer des stubs d’interopérabilité personnalisés.

  • Fournissez des fonctionnalités de marshaling dans un stub que le runtime ne fournit pas.

  • Fournissez des fonctionnalités de répartition de méthode spécifiques à l’utilisateur.

Vous appliquez l’attribut sur une méthode dans une interface pour spécifier une méthode stub correspondante pour l’interopérabilité COM managée vers native.

Si cet attribut est rencontré pendant l’exécution, le Common Language Runtime ne génère pas dynamiquement un stub d’interopérabilité. Au lieu de cela, il appelle le stub personnalisé créé au moment de la génération.

L’attribut ManagedToNativeComInteropStubAttribute présente les caractéristiques suivantes :

  • L’attribut ne peut être utilisé que sur les méthodes des interfaces marquées [ComImport]. Si l’attribut est appliqué aux types non interface, il est ignoré par le runtime.

  • L’attribut ne peut être utilisé qu’une seule fois sur la même méthode dans une interface. S’il est utilisé plusieurs fois, le compilateur génère une erreur d’attribut dupliquée.

  • L’attribut n’est pas héritant d’une interface de base. Les interfaces dérivées doivent attribuer explicitement l’attribut.

  • L’assembly qui contient la méthode attribuée doit également contenir le stub personnalisé.

Les méthodes stub surchargées sont valides. Même si vous spécifiez uniquement le type et le nom de la méthode stub, le runtime découvre le stub correspondant. Pour ce faire, examinez tous les arguments de la méthode d’interface, puis effectuez une correspondance de signature complète à l’aide d’un pointeur explicite this .

Il est également possible que plusieurs méthodes d’une interface partagent la même méthode stub ; Toutefois, vous devez être prudent lorsque vous utilisez des stubs partagés.

Notes

Les méthodes stub doivent être statiques.

Vous pouvez informer le runtime d’utiliser un stub d’interopérabilité personnalisé au moment de la génération au lieu de l’exécution avec le code C# suivant :

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

Vous pouvez ensuite utiliser le code suivant pour déclarer la méthode stub correspondante :

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

Constructeurs

ManagedToNativeComInteropStubAttribute(Type, String)

Initialise une nouvelle instance de la classe ManagedToNativeComInteropStubAttribute avec le type de classe et le nom de méthode spécifiés.

Propriétés

ClassType

Obtient la classe qui contient la méthode stub requise.

MethodName

Obtient le nom de la méthode stub.

TypeId

Lors de l'implémentation dans une classe dérivée, obtient un identificateur unique pour l'objet Attribute.

(Hérité de Attribute)

Méthodes

Equals(Object)

Retourne une valeur qui indique si cette instance est égale à un objet spécifié.

(Hérité de Attribute)
GetHashCode()

Retourne le code de hachage de cette instance.

(Hérité de Attribute)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
IsDefaultAttribute()

En cas de substitution dans une classe dérivée, indique si la valeur de cette instance est la valeur par défaut pour la classe dérivée.

(Hérité de Attribute)
Match(Object)

En cas de substitution dans une classe dérivée, retourne une valeur indiquant si cette instance équivaut à un objet spécifié.

(Hérité de Attribute)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)

Implémentations d’interfaces explicites

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

Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch.

(Hérité de Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Récupère les informations de type pour un objet, qui peuvent être utilisées pour obtenir les informations de type d'une interface.

(Hérité de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1).

(Hérité de Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fournit l'accès aux propriétés et aux méthodes exposées par un objet.

(Hérité de Attribute)

S’applique à