PreserveSigAttribute Třída

Definice

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
PreserveSigAttribute
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)

Platí pro

Viz také