Condividi tramite


PreserveSigAttribute Classe

Definizione

Indica che la trasformazione della firma HRESULT che si svolge durante le chiamate di interoperabilità COM deve essere eliminata.

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
Ereditarietà
PreserveSigAttribute
Attributi

Esempio

Nell'esempio seguente viene illustrato come Tlbexp.exe converte un metodo C# senza PreserveSigAttribute l'esportazione di un assembly in una libreria di tipi COM.

Firma gestita:

int DoSomething (long l);  

Firma non gestita:

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

Quando si applica PreserveSigAttribute allo stesso metodo C# ed esportare l'assembly, la conversione del metodo differisce dall'esempio precedente. Si noti che Tlbexp.exe rimuove il modificatore di parametri HRESULT e [out, retval].

Firma gestita:

[PreserveSig] int DoSomething (long l);  

Firma non gestita:

int DoSomething ([in] long l);  

Commenti

È possibile applicare questo attributo ai metodi.

Per impostazione predefinita, la Tlbexp.exe (Type Library Exporter) garantisce che una chiamata che restituisce un valore HRESULT di S_OK venga trasformato in modo che il parametro [out, retval] venga usato come valore restituito dalla funzione. Il S_OK HRESULT viene rimosso. Per HRESULTs diversi da S_OK, il runtime genera un'eccezione ed elimina il parametro [out, retval]. Quando si applica a PreserveSigAttribute una firma del metodo gestito, le firme gestite e non gestite del metodo con attributi sono identiche.

La conservazione della firma del metodo originale è necessaria se il membro restituisce più di un valore HRESULT riuscito e si desidera rilevare i diversi valori. Poiché la maggior parte dei membri COM restituisce un HRESULT, applicando , è possibile recuperare un intero che rappresenta l'esito positivo o l'errore PreserveSigAttributeHRESULT. Tlbexp.exe mantiene i parametri [out, retval] come parametri out nella firma gestita.

Il Tlbimp.exe (Type Library Import) applica anche questo attributo; applica l'attributo a dispinterfaces quando importa una libreria di tipi.

Nota

I tipi restituiti di Currency, Guide Object non sono supportati dalla classe quando si verifica l'interoperabilità PreserveSigAttribute da COM al codice gestito e il codice gestito è contrassegnato con la PreserveSigAttribute classe . Quando si tenta di usare uno di questi tipi restituiti con la PreserveSigAttribute classe durante queste condizioni, viene generato un TypeLoadException oggetto .

Costruttori

PreserveSigAttribute()

Inizializza una nuova istanza della classe PreserveSigAttribute.

Proprietà

TypeId

Quando è implementata in una classe derivata, ottiene un identificatore univoco della classe Attribute.

(Ereditato da Attribute)

Metodi

Equals(Object)

Restituisce un valore che indica se questa istanza è uguale a un oggetto specificato.

(Ereditato da Attribute)
GetHashCode()

Restituisce il codice hash per l'istanza.

(Ereditato da Attribute)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

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

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

(Ereditato da Attribute)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

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

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

(Ereditato da Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Recupera il numero delle interfacce di informazioni sul tipo fornite da un oggetto (0 o 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.

(Ereditato da Attribute)

Si applica a

Vedi anche