PreserveSigAttribute PreserveSigAttribute PreserveSigAttribute PreserveSigAttribute Class

Definizione

Indica che la trasformazione della firma del valore HRESULT o retval eseguita durante le chiamate di interoperabilità COM, deve essere evitata.Indicates that the HRESULT or retval signature transformation that takes place during COM interop calls should be suppressed.

public ref class PreserveSigAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Method, Inherited=false)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class PreserveSigAttribute : Attribute
type PreserveSigAttribute = class
    inherit Attribute
Public NotInheritable Class PreserveSigAttribute
Inherits Attribute
Ereditarietà
PreserveSigAttributePreserveSigAttributePreserveSigAttributePreserveSigAttribute
Attributi

Esempi

Nell'esempio seguente viene illustrato il modo in cui Tlbexp C# . exe PreserveSigAttribute converte un metodo senza quando si esporta un assembly in una libreria dei tipi com.The following example shows how Tlbexp.exe converts a C# method without PreserveSigAttribute when exporting an assembly to a COM type library.

Firma gestita:Managed signature:

int DoSomething (long l);  

Firma non gestita:Unmanaged signature:

HRESULT DoSomething ([in] long l, [out, retval] int * i);  

Quando si applica PreserveSigAttribute allo stesso C# metodo ed Esporta l'assembly, la conversione del metodo differisce dall'esempio precedente.When you apply PreserveSigAttribute to the same C# method and export the assembly, the method conversion differs from the previous example. Si noti che Tlbexp. exe rimuove HRESULT e il modificatore di parametro [out, retval].Notice that Tlbexp.exe removes the HRESULT and the [out, retval] parameter modifier.

Firma gestita:Managed signature:

[PreserveSig] int DoSomething (long l);  

Firma non gestita:Unmanaged signature:

int DoSomething ([in] long l);  

Commenti

È possibile applicare questo attributo ai metodi.You can apply this attribute to methods.

Per impostazione predefinita, Tlbexp. exe (utilità di esportazione della libreria dei tipi) assicura che una chiamata che restituisce un valore HRESULT di S_OK venga trasformata in modo che il parametro [out, retval] venga utilizzato come valore restituito della funzione.By default, the Tlbexp.exe (Type Library Exporter) ensures that a call that returns an HRESULT of S_OK is transformed such that the [out, retval] parameter is used as the function return value. Il valore HRESULT S_OK viene eliminato.The S_OK HRESULT is discarded. Per HRESULT diversi da S_OK, il runtime genera un'eccezione ed Elimina il parametro [out, retval].For HRESULTs other than S_OK, the runtime throws an exception and discards the [out, retval] parameter. Quando si applica PreserveSigAttribute a una firma del metodo gestito, le firme gestite e non gestite del metodo con attributi sono identiche.When you apply the PreserveSigAttribute to a managed method signature, the managed and unmanaged signatures of the attributed method are identical.

Il mantenimento della firma del metodo originale è necessario se il membro restituisce più di un valore HRESULT di esito positivo e si desidera rilevare i valori diversi.Preserving the original method signature is necessary if the member returns more than one success HRESULT value and you want to detect the different values. Poiché la maggior parte dei membri COM restituisce un HRESULT, PreserveSigAttributeapplicando, è possibile recuperare un valore integer che rappresenta l'esito positivo o negativo.Since most COM member return an HRESULT, by applying the PreserveSigAttribute, you can retrieve an integer representing the success or failure HRESULT. Tlbexp. exe conserva tutti i parametri [out, retval] come parametri out nella firma gestita.Tlbexp.exe preserves any [out, retval] parameters as out parameters in the managed signature.

Questo attributo viene applicato anche da Tlbimp. exe (utilità di importazione della libreria dei tipi) . applica l'attributo a dispinterfaces quando importa una libreria dei tipi.The Tlbimp.exe (Type Library Importer) also applies this attribute; it applies the attribute to dispinterfaces when it imports a type library.

Nota

I Currency Guid Object tipi restituiti di, e non sono supportati dalla classe quando l'interoperatività viene eseguita da com a codice gestito e il codice gestito è contrassegnato PreserveSigAttribute con la classe. PreserveSigAttributeReturn types of Currency, Guid, and Object are not supported by the PreserveSigAttribute class when interoperation occurs from COM to managed code and the managed code is marked with the PreserveSigAttribute class. Quando si tenta di usare uno di questi tipi restituiti con la PreserveSigAttribute classe durante queste condizioni, viene TypeLoadException generata un'eccezione.When you attempt to use one of these return types with the PreserveSigAttribute class during these conditions, a TypeLoadException is thrown.

Costruttori

PreserveSigAttribute() PreserveSigAttribute() PreserveSigAttribute() PreserveSigAttribute()

Inizializza una nuova istanza della classe PreserveSigAttribute.Initializes a new instance of the PreserveSigAttribute class.

Metodi

Equals(Object) Equals(Object) Equals(Object) 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.

(Inherited from Attribute)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

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

(Inherited from Attribute)
GetType() GetType() GetType() GetType()

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

(Inherited from Object)
IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute() 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.

(Inherited from Attribute)
Match(Object) Match(Object) Match(Object) 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.

(Inherited from Attribute)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

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

(Inherited from Object)
ToString() ToString() ToString() ToString()

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

(Inherited from Object)

Implementazioni dell'interfaccia esplicita

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) _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.

(Inherited from Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _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.

(Inherited from Attribute)
_Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _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).

(Inherited from Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _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.

(Inherited from Attribute)

Proprietà

TypeId TypeId TypeId 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.

(Inherited from Attribute)

Si applica a

Vedi anche