PreserveSigAttribute Osztály
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
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
- 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) |