PreserveSigAttribute Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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à
- 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) |