PreserveSigAttribute Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Označuje, že transformace podpisu HRESULT, která probíhá během volání zprostředkovatele komunikace com, by měla být potlačena.
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
- Dědičnost
- Atributy
Příklady
Následující příklad ukazuje, jak Tlbexp.exe převede metodu jazyka C# bez PreserveSigAttribute exportu sestavení do knihovny typů modelu COM.
Spravovaný podpis:
int DoSomething (long l);
Nespravovaný podpis:
HRESULT DoSomething ([in] long l, [out, retval] int * i);
Pokud použijete PreserveSigAttribute stejnou metodu C# a export sestavení, převod metody se liší od předchozího příkladu. Všimněte si, že Tlbexp.exe odebere modifikátor parametru HRESULT a [out, retval].
Spravovaný podpis:
[PreserveSig] int DoSomething (long l);
Nespravovaný podpis:
int DoSomething ([in] long l);
Poznámky
Tento atribut můžete použít na metody.
Ve výchozím nastavení Tlbexp.exe (exportér knihovny typů) zajišťuje, že se jako návratová hodnota funkce použije volání, které vrátí hodnotu HRESULT S_OK, aby se jako návratová hodnota funkce použil parametr [out, retval]. S_OK HRESULT se zahodí. Pro hodnoty HRESULT jiné než S_OK vyvolá modul runtime výjimku a zahodí parametr [out, retval]. Když použijete PreserveSigAttribute podpis spravované metody, spravované a nespravované podpisy atributové metody jsou identické.
Zachování podpisu původní metody je nezbytné, pokud člen vrátí více než jednu hodnotu HRESULT úspěchu a chcete zjistit různé hodnoty. Vzhledem k tomu, že většina členů MODELU COM vrací hodnotu HRESULT, můžete načíst PreserveSigAttributecelé číslo představující úspěch nebo selhání HRESULT. Tlbexp.exe zachovává všechny parametry [out, retval] jako výstupní parametry ve spravovaném podpisu.
Tento atribut také použije Tlbimp.exe (Import knihovny typů). použije atribut na dispinterfaces při importu knihovny typů.
Note
Návratové typy , Currencya Guid nejsou podporovány Object třídou, když interoperace dojde z modelu COM ke spravovanému PreserveSigAttributekódu a spravovaný kód je označen PreserveSigAttribute třídou. Při pokusu o použití jednoho z těchto návratových typů s PreserveSigAttribute třídou během těchto podmínek je TypeLoadException vyvolán.
Konstruktory
| Name | Description |
|---|---|
| PreserveSigAttribute() |
Inicializuje novou instanci PreserveSigAttribute třídy. |
Vlastnosti
| Name | Description |
|---|---|
| TypeId |
Při implementaci v odvozené třídě získá jedinečný identifikátor pro tento Attribute. (Zděděno od Attribute) |
Metody
| Name | Description |
|---|---|
| Equals(Object) |
Vrátí hodnotu, která určuje, zda je tato instance rovna zadanému objektu. (Zděděno od Attribute) |
| GetHashCode() |
Vrátí kód hash pro tuto instanci. (Zděděno od Attribute) |
| GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
| IsDefaultAttribute() |
Při přepsání v odvozené třídě určuje, zda hodnota této instance je výchozí hodnotou pro odvozenou třídu. (Zděděno od Attribute) |
| Match(Object) |
Při přepsání v odvozené třídě vrátí hodnotu, která určuje, zda se tato instance rovná zadanému objektu. (Zděděno od Attribute) |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
| ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
Explicitní implementace rozhraní
| Name | Description |
|---|---|
| _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Mapuje sadu názvů na odpovídající sadu identifikátorů pro rozesílání. (Zděděno od Attribute) |
| _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Načte informace o typu objektu, který lze použít k získání informací o typu pro rozhraní. (Zděděno od Attribute) |
| _Attribute.GetTypeInfoCount(UInt32) |
Získá počet rozhraní typu informací, které objekt poskytuje (0 nebo 1). (Zděděno od Attribute) |
| _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Poskytuje přístup k vlastnostem a metodám vystaveným objektem. (Zděděno od Attribute) |