Sdílet prostřednictvím


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 jazyka C# a exportujete sestavení, převod metody se liší od předchozího příkladu. Všimněte si, že Tlbexp.exe odebere hodnotu HRESULT a modifikátor parametru [out, retval].

Spravovaný podpis:

[PreserveSig] int DoSomething (long l);  

Nespravovaný podpis:

int DoSomething ([in] long l);  

Poznámky

Tento atribut můžete použít u metod.

Ve výchozím nastavení Tlbexp.exe (Exportér knihovny typů) zajišťuje, že volání, které vrací hodnotu HRESULT S_OK, se transformuje tak, aby se jako návratová hodnota funkce použil parametr [out, retval]. S_OK HRESULT se zahodí. U hodnot HRESULT jiných než S_OK vyvolá modul runtime výjimku a zahodí parametr [out, retval]. Když použijete PreserveSigAttribute na podpis spravované metody, spravované a nespravované podpisy atributu metody jsou identické.

Zachování podpisu původní metody je nezbytné, pokud člen vrátí více než jednu úspěšnou hodnotu HRESULT a chcete zjistit různé hodnoty. Vzhledem k tomu, že většina členů modelu COM vrací hodnotu HRESULT, můžete použitím PreserveSigAttributefunkce načíst celé číslo představující úspěch nebo selhání HRESULT. Tlbexp.exe zachová všechny parametry [out, retval] jako odchozí parametry ve spravovaném podpisu.

Tento atribut použije takéTlbimp.exe (Import knihovny typů). použije atribut na dispinterfaces při importu knihovny typů.

Poznámka

Návratové Currencytypy , Guida Object nejsou podporovány PreserveSigAttribute třídou, pokud dochází k vzájemné spolupráci z modelu COM do spravovaného kó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

PreserveSigAttribute()

Inicializuje novou instanci PreserveSigAttribute třídy .

Vlastnosti

TypeId

Při implementaci v odvozené třídě získá jedinečný identifikátor pro tuto Attributetřídu .

(Zděděno od Attribute)

Metody

Equals(Object)

Vrací hodnotu, která určuje, zda je tato instance rovna zadanému objektu.

(Zděděno od Attribute)
GetHashCode()

Vrátí hodnotu hash pro tuto instanci.

(Zděděno od Attribute)
GetType()

Type Získá z aktuální instance.

(Zděděno od Object)
IsDefaultAttribute()

Při přepsání v odvozené třídě označuje, zda je hodnota této instance 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á označuje, zda se tato instance rovná zadanému objektu.

(Zděděno od Attribute)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Explicitní implementace rozhraní

_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é