Udostępnij za pośrednictwem


PreserveSigAttribute Klasa

Definicja

Wskazuje, że transformacja podpisu HRESULT, która odbywa się podczas wywołań międzyoperacyjności MODELU COM, powinna zostać pominięta.

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
Dziedziczenie
PreserveSigAttribute
Atrybuty

Przykłady

W poniższym przykładzie pokazano, jak Tlbexp.exe konwertuje metodę języka C# bez PreserveSigAttribute eksportowania zestawu do biblioteki typów COM.

Podpis zarządzany:

int DoSomething (long l);  

Podpis niezarządzany:

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

W przypadku zastosowania PreserveSigAttribute do tej samej metody języka C# i wyeksportowania zestawu konwersja metody różni się od poprzedniego przykładu. Zwróć uwagę, że Tlbexp.exe usuwa modyfikator parametrów HRESULT i [out, retval].

Podpis zarządzany:

[PreserveSig] int DoSomething (long l);  

Podpis niezarządzany:

int DoSomething ([in] long l);  

Uwagi

Ten atrybut można zastosować do metod.

Domyślnie Tlbexp.exe (eksporter biblioteki typów) gwarantuje, że wywołanie zwracające wartość HRESULT S_OK jest przekształcane tak, aby parametr [out, retval] był używany jako wartość zwracana przez funkcję. S_OK HRESULT jest odrzucany. W przypadku wartości HRESULTs innych niż S_OK środowisko uruchomieniowe zgłasza wyjątek i odrzuca parametr [out, retval]. Po zastosowaniu PreserveSigAttribute metody do sygnatury metody zarządzanej zarządzane i niezarządzane podpisy metody przypisanej są identyczne.

Zachowanie oryginalnej sygnatury metody jest konieczne, jeśli element członkowski zwraca więcej niż jedną wartość HRESULT sukcesu i chcesz wykryć różne wartości. Ponieważ większość elementów członkowskich COM zwraca wartość HRESULT, stosując PreserveSigAttributeelement , można pobrać liczbę całkowitą reprezentującą powodzenie lub niepowodzenie HRESULT. Tlbexp.exe zachowuje wszystkie parametry [out, retval] jako parametry w podpisie zarządzanym.

Tlbimp.exe (importer biblioteki typów) stosuje również ten atrybut; stosuje atrybut do dispinterfaces podczas importowania biblioteki typów.

Uwaga

Zwracane typy Currency, Guidi Object nie są obsługiwane przez klasę PreserveSigAttribute , gdy współdziałanie odbywa się z modelu COM do kodu zarządzanego, a zarządzany kod jest oznaczony klasą PreserveSigAttribute . Gdy próbujesz użyć jednego z tych typów zwracanych z klasą PreserveSigAttribute podczas tych warunków, TypeLoadException jest zgłaszana wartość .

Konstruktory

PreserveSigAttribute()

Inicjuje nowe wystąpienie klasy PreserveSigAttribute.

Właściwości

TypeId

Po zaimplementowaniu w klasie pochodnej pobiera unikatowy identyfikator dla tego elementu Attribute.

(Odziedziczone po Attribute)

Metody

Equals(Object)

Zwraca wartość wskazującą, czy to wystąpienie jest równe podanemu obiektowi.

(Odziedziczone po Attribute)
GetHashCode()

Zwraca wartość skrótu dla tego wystąpienia.

(Odziedziczone po Attribute)
GetType()

Type Pobiera bieżące wystąpienie.

(Odziedziczone po Object)
IsDefaultAttribute()

W przypadku zastąpienia w klasie pochodnej wskazuje, czy wartość tego wystąpienia jest wartością domyślną klasy pochodnej.

(Odziedziczone po Attribute)
Match(Object)

W przypadku zastąpienia w klasie pochodnej zwraca wartość wskazującą, czy to wystąpienie jest równe określonemu obiektowi.

(Odziedziczone po Attribute)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Jawne implementacje interfejsu

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

Zestaw nazw jest mapowany na odpowiedni zestaw identyfikatorów wysyłania.

(Odziedziczone po Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Pobiera informacje o typie obiektu, którego można użyć do pobrania informacji o typie interfejsu.

(Odziedziczone po Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Pobiera informację o liczbie typów interfejsów, jakie zawiera obiekt (0 lub 1).

(Odziedziczone po Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Umożliwia dostęp do właściwości i metod udostępnianych przez obiekt.

(Odziedziczone po Attribute)

Dotyczy

Zobacz też