PreserveSigAttribute Osztály

Definíció

Azt jelzi, hogy a COM-interop hívások során végbemegy HRESULT-aláírás-átalakítást el kell tiltani.

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
Öröklődés
PreserveSigAttribute
Attribútumok

Példák

Az alábbi példa bemutatja, hogyan konvertálja a Tlbexp.exe egy C#-metódust a szerelvény COM-típusú kódtárba való exportálása nélkül PreserveSigAttribute .

Felügyelt aláírás:

int DoSomething (long l);  

Nem felügyelt aláírás:

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

Ha ugyanarra a C# metódusra alkalmazza PreserveSigAttribute , és exportálja a szerelvényt, a metódusátalakítás eltér az előző példától. Figyelje meg, hogy Tlbexp.exe eltávolítja a HRESULT és a [out, retval] paramétermódosítót.

Felügyelt aláírás:

[PreserveSig] int DoSomething (long l);  

Nem felügyelt aláírás:

int DoSomething ([in] long l);  

Megjegyzések

Ezt az attribútumot alkalmazhatja a metódusokra.

Alapértelmezés szerint a Tlbexp.exe (típuskódtár-exportőr) biztosítja, hogy a S_OK HRESULT értékét visszaadó hívás úgy legyen átalakítva, hogy a függvény visszatérési értékeként a függvény a [out, retval] paramétert használja. A S_OK HRESULT el lesz vetve. A nem S_OK HRESULT-ekhez a futtatókörnyezet kivételt vet ki, és elveti az [out, retval] paramétert. A felügyelt metódusok aláírásának alkalmazásakor PreserveSigAttribute az attribútumként megadott metódus felügyelt és nem felügyelt aláírásai azonosak.

Az eredeti metódus aláírásának megőrzésére akkor van szükség, ha a tag több sikeres HRESULT értéket ad vissza, és szeretné észlelni a különböző értékeket. Mivel a COM-tagok többsége HRESULT-t ad vissza, a PreserveSigAttributesikeres vagy sikertelen HRESULT értéknek megfelelő egész szám kérhető le. Tlbexp.exe megőrzi az [out, retval] paramétereket out paraméterként a felügyelt aláírásban.

A Tlbimp.exe (típustár-importáló) is alkalmazza ezt az attribútumot; az attribútumot a dispinterfacesre alkalmazza, amikor egy típustárat importál.

Note

Az osztály nem támogatja a visszatérési Currencytípusokat, GuidObject ha a PreserveSigAttribute COM-ból felügyelt kódba való együttműködés történik, és a felügyelt kód az osztálysal PreserveSigAttribute van megjelölve. Amikor ezen visszatérési típusok egyikét próbálja használni az PreserveSigAttribute osztálysal ezen feltételek alatt, a rendszer egy TypeLoadException értéket ad vissza.

Konstruktorok

Name Description
PreserveSigAttribute()

Inicializálja a PreserveSigAttribute osztály új példányát.

Tulajdonságok

Name Description
TypeId

Ha származtatott osztályban implementálják, ehhez egy egyedi azonosítót Attributekap.

(Öröklődés forrása Attribute)

Metódusok

Name Description
Equals(Object)

Olyan értéket ad vissza, amely jelzi, hogy ez a példány egyenlő-e egy adott objektummal.

(Öröklődés forrása Attribute)
GetHashCode()

A példány kivonatkódját adja vissza.

(Öröklődés forrása Attribute)
GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
IsDefaultAttribute()

Ha egy származtatott osztályban felül van bírálva, azt jelzi, hogy a példány értéke-e a származtatott osztály alapértelmezett értéke.

(Öröklődés forrása Attribute)
Match(Object)

Származtatott osztály felülírásakor egy olyan értéket ad vissza, amely jelzi, hogy ez a példány egy adott objektummal egyenlő-e.

(Öröklődés forrása Attribute)
MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
ToString()

Az aktuális objektumot jelképező sztringet ad vissza.

(Öröklődés forrása Object)

Explicit interfész-implementációk

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

Névkészletet képez le a küldési azonosítók megfelelő készletére.

(Öröklődés forrása Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Lekéri egy objektum típusadatait, amelyek a felület típusadatainak lekérésére használhatók.

(Öröklődés forrása Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Lekéri az objektumok által biztosított típusinformációs felületek számát (0 vagy 1).

(Öröklődés forrása Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Hozzáférést biztosít az objektumok által közzétett tulajdonságokhoz és metódusokhoz.

(Öröklődés forrása Attribute)

A következőre érvényes:

Lásd még