PreserveSigAttribute Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Indique que la transformation de signature HRESULT qui a lieu pendant les appels COM Interop doit être supprimée.
public ref class PreserveSigAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Method, Inherited=false)]
public sealed class PreserveSigAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Method, Inherited=false)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class PreserveSigAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Method, Inherited=false)>]
type PreserveSigAttribute = class
inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Method, Inherited=false)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type PreserveSigAttribute = class
inherit Attribute
Public NotInheritable Class PreserveSigAttribute
Inherits Attribute
- Héritage
- Attributs
Exemples
L’exemple suivant montre comment Tlbexp.exe convertit une méthode C# sans PreserveSigAttribute lors de l’exportation d’un assembly vers une bibliothèque de types COM.
Signature managée :
int DoSomething (long l);
Signature non managée :
HRESULT DoSomething ([in] long l, [out, retval] int * i);
Lorsque vous appliquez PreserveSigAttribute la même méthode C# et que vous exportez l’assembly, la conversion de méthode diffère de l’exemple précédent. Notez que Tlbexp.exe supprime le modificateur de paramètre HRESULT et [out, retval].
Signature managée :
[PreserveSig] int DoSomething (long l);
Signature non managée :
int DoSomething ([in] long l);
Remarques
Vous pouvez appliquer cet attribut aux méthodes.
Par défaut, le Tlbexp.exe (exporteur de bibliothèque de types) garantit qu’un appel qui retourne un HRESULT de S_OK est transformé de telle sorte que le paramètre [out, retval] soit utilisé comme valeur de retour de fonction. La S_OK HRESULT est ignorée. Pour les HRESULT autres que S_OK, le runtime lève une exception et ignore le paramètre [out, retval]. Lorsque vous appliquez la PreserveSigAttribute signature à une signature de méthode managée, les signatures managées et non managées de la méthode attribuée sont identiques.
La conservation de la signature de méthode d’origine est nécessaire si le membre retourne plusieurs valeurs HRESULT réussies et que vous souhaitez détecter les différentes valeurs. Étant donné que la plupart des membres COM retournent un HRESULT, en appliquant le PreserveSigAttribute, vous pouvez récupérer un entier représentant le succès ou l’échec HRESULT. Tlbexp.exe conserve tous les paramètres [out, retval] en tant que paramètres sortants dans la signature managée.
Le Tlbimp.exe (Importateur de bibliothèque de types) applique également cet attribut ; il applique l’attribut aux dispinterfaces lorsqu’il importe une bibliothèque de types.
Note
Les types de retour , CurrencyGuidet Object ne sont pas pris en charge par la PreserveSigAttribute classe lorsque l’interopérabilité se produit de COM vers du code managé et que le code managé est marqué avec la PreserveSigAttribute classe. Lorsque vous tentez d’utiliser l’un de ces types de retour avec la PreserveSigAttribute classe pendant ces conditions, une TypeLoadException exception est levée.
Constructeurs
| Nom | Description |
|---|---|
| PreserveSigAttribute() |
Initialise une nouvelle instance de la classe PreserveSigAttribute. |
Propriétés
| Nom | Description |
|---|---|
| TypeId |
En cas d’implémentation dans une classe dérivée, obtient un identificateur unique pour cette Attribute. (Hérité de Attribute) |
Méthodes
| Nom | Description |
|---|---|
| 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 pour cette instance. (Hérité de Attribute) |
| GetType() |
Obtient la 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 de la classe dérivée. (Hérité de Attribute) |
| Match(Object) |
En cas de substitution dans une classe dérivée, retourne une valeur qui indique si cette instance est égale à un objet spécifié. (Hérité de Attribute) |
| MemberwiseClone() |
Crée une copie superficielle du Objectactuel. (Hérité de Object) |
| ToString() |
Retourne une chaîne qui représente l’objet actuel. (Hérité de Object) |
Implémentations d’interfaces explicites
| Nom | Description |
|---|---|
| _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 d’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 méthodes exposées par un objet. (Hérité de Attribute) |