PreserveSigAttribute Klasse

Definition

Gibt an, dass die HRESULT-Signaturtransformation, die während COM-Interoperabilitätsaufrufen stattfindet, unterdrückt werden soll.

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
Vererbung
PreserveSigAttribute
Attribute

Beispiele

Das folgende Beispiel zeigt, wie Tlbexp.exe eine C#-Methode ohne PreserveSigAttribute Export einer Assembly in eine COM-Typbibliothek konvertiert.

Verwaltete Signatur:

int DoSomething (long l);

Nicht verwaltete Signatur:

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

Wenn Sie auf dieselbe C#-Methode anwenden PreserveSigAttribute und die Assembly exportieren, unterscheidet sich die Methodenkonvertierung vom vorherigen Beispiel. Beachten Sie, dass Tlbexp.exe den HRESULT- und den [out, retval]-Parametermodifizierer entfernt.

Verwaltete Signatur:

[PreserveSig] int DoSomething (long l);

Nicht verwaltete Signatur:

int DoSomething ([in] long l);

Hinweise

Sie können dieses Attribut auf Methoden anwenden.

Standardmäßig stellt der Tlbexp.exe (Type Library Exporter) sicher, dass ein Aufruf, der ein HRESULT von S_OK zurückgibt, so transformiert wird, dass der Parameter [out, retval] als Funktionsrückgabewert verwendet wird. Das S_OK HRESULT wird verworfen. Bei HRESULTs außer S_OK löst die Laufzeit eine Ausnahme aus und verwirft den Parameter [out, retval]. Wenn Sie die PreserveSigAttribute Signatur einer verwalteten Methode anwenden, sind die verwalteten und nicht verwalteten Signaturen der attributierten Methode identisch.

Das Beibehalten der ursprünglichen Methodensignatur ist erforderlich, wenn das Element mehr als einen Erfolg HRESULT-Wert zurückgibt und Sie die verschiedenen Werte erkennen möchten. Da die meisten COM-Member ein HRESULT zurückgeben, können Sie durch Anwenden des PreserveSigAttributeHRESULT eine ganze Zahl abrufen, die den Erfolg oder Fehler HRESULT darstellt. Tlbexp.exe behält alle [out,retval]-Parameter als Ausgabeparameter in der verwalteten Signatur bei.

Das Tlbimp.exe (Type Library Importer) wendet auch dieses Attribut an; es wendet das Attribut auf dispinterfaces an, wenn es eine Typbibliothek importiert.

Note

Rückgabetypen von Currency, Guid, und Object werden von der PreserveSigAttribute Klasse nicht unterstützt, wenn die Interoperabilität von COM zu verwaltetem Code auftritt und der verwaltete Code mit der PreserveSigAttribute Klasse gekennzeichnet wird. Wenn Sie versuchen, einen dieser Rückgabetypen mit der PreserveSigAttribute Klasse während dieser Bedingungen zu verwenden, wird ein TypeLoadException Fehler ausgelöst.

Konstruktoren

Name Beschreibung
PreserveSigAttribute()

Initialisiert eine neue Instanz der PreserveSigAttribute-Klasse.

Eigenschaften

Name Beschreibung
TypeId

Wenn sie in einer abgeleiteten Klasse implementiert wird, wird ein eindeutiger Bezeichner für diese Attribute.

(Geerbt von Attribute)

Methoden

Name Beschreibung
Equals(Object)

Gibt einen Wert zurück, der angibt, ob diese Instanz einem angegebenen Objekt entspricht.

(Geerbt von Attribute)
GetHashCode()

Gibt den Hashcode für diesen instance zurück.

(Geerbt von Attribute)
GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
IsDefaultAttribute()

Wenn sie in einer abgeleiteten Klasse überschrieben wird, gibt an, ob der Wert dieser Instanz der Standardwert für die abgeleitete Klasse ist.

(Geerbt von Attribute)
Match(Object)

Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem angegebenen Objekt entspricht.

(Geerbt von Attribute)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

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

Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu.

(Geerbt von Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Ruft die Typinformationen für ein Objekt ab, mit denen die Typinformationen für eine Schnittstelle abgerufen werden können.

(Geerbt von Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1).

(Geerbt von Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Bietet Zugriff auf Eigenschaften und Methoden, die von einem Objekt verfügbar gemacht werden.

(Geerbt von Attribute)

Gilt für:

Weitere Informationen