PreserveSigAttribute Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
- 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) |