PreserveSigAttribute Klass

Definition

Anger att HRESULT-signaturtransformeringen som sker under COM-interop-anrop ska ignoreras.

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
Arv
PreserveSigAttribute
Attribut

Exempel

I följande exempel visas hur Tlbexp.exe konverterar en C#-metod utan PreserveSigAttribute att exportera en sammansättning till ett COM-typbibliotek.

Hanterad signatur:

int DoSomething (long l);

Ohanterad signatur:

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

När du använder PreserveSigAttribute samma C#-metod och exporterar sammansättningen skiljer sig metodkonverteringen från föregående exempel. Observera att Tlbexp.exe tar bort parametermodifieraren HRESULT och [out, retval].

Hanterad signatur:

[PreserveSig] int DoSomething (long l);

Ohanterad signatur:

int DoSomething ([in] long l);

Kommentarer

Du kan använda det här attributet på metoder.

Som standard ser Tlbexp.exe (Typbiblioteksexportör) till att ett anrop som returnerar en HRESULT av S_OK transformeras så att parametern [out, retval] används som funktionens returvärde. S_OK HRESULT ignoreras. För andra HRESULT-värden än S_OK genererar körningen ett undantag och tar bort parametern [out, retval]. När du använder signaturen PreserveSigAttribute för en hanterad metod är de hanterade och ohanterade signaturerna för den tillskrivna metoden identiska.

Det är nödvändigt att bevara den ursprungliga metodsignaturen om medlemmen returnerar mer än ett HRESULT-värde och vill identifiera de olika värdena. Eftersom de flesta COM-medlemmar returnerar en HRESULT kan du genom att tillämpa PreserveSigAttribute, hämta ett heltal som representerar hresulten för lyckade eller misslyckade. Tlbexp.exe bevarar alla parametrar [out, retval] som utparametrar i den hanterade signaturen.

Tlbimp.exe (typbiblioteksimportör) tillämpar även det här attributet. det tillämpar attributet på dispinterfaces när det importerar ett typbibliotek.

Note

Returtyper av Currency, Guidoch Object stöds inte av PreserveSigAttribute klassen när interoperation sker från COM till hanterad kod och den hanterade koden markeras med PreserveSigAttribute klassen. När du försöker använda någon av dessa returtyper med PreserveSigAttribute klassen under dessa villkor genereras en TypeLoadException .

Konstruktorer

Name Description
PreserveSigAttribute()

Initierar en ny instans av PreserveSigAttribute klassen.

Egenskaper

Name Description
TypeId

När den implementeras i en härledd klass hämtar du en unik identifierare för den här Attribute.

(Ärvd från Attribute)

Metoder

Name Description
Equals(Object)

Returnerar ett värde som anger om den här instansen är lika med ett angivet objekt.

(Ärvd från Attribute)
GetHashCode()

Returnerar hash-koden för den här instansen.

(Ärvd från Attribute)
GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
IsDefaultAttribute()

När den åsidosättas i en härledd klass anger du om värdet för den här instansen är standardvärdet för den härledda klassen.

(Ärvd från Attribute)
Match(Object)

När den åsidosätts i en härledd klass returneras ett värde som anger om den här instansen är lika med ett angivet objekt.

(Ärvd från Attribute)
MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
ToString()

Returnerar en sträng som representerar det aktuella objektet.

(Ärvd från Object)

Explicita gränssnittsimplementeringar

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

Mappar en uppsättning namn till en motsvarande uppsättning av sändningsidentifierare.

(Ärvd från Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Hämtar typinformationen för ett objekt, som kan användas för att hämta typinformationen för ett gränssnitt.

(Ärvd från Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Hämtar antalet typinformationsgränssnitt som ett objekt tillhandahåller (antingen 0 eller 1).

(Ärvd från Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Ger åtkomst till egenskaper och metoder som exponeras av ett objekt.

(Ärvd från Attribute)

Gäller för

Se även