Freigeben über


PreserveSigAttribute-Klasse

 

Gibt an, dass das HRESULT oder retval Signaturtransformation, die während COM-Interop-Aufrufen stattfindet unterdrückt werden sollen.

Namespace:   System.Runtime.InteropServices
Assembly:  mscorlib (in mscorlib.dll)

Vererbungshierarchie

System.Object
  System.Attribute
    System.Runtime.InteropServices.PreserveSigAttribute

Syntax

[AttributeUsageAttribute(AttributeTargets.Method, Inherited = false)]
[ComVisibleAttribute(true)]
public sealed class PreserveSigAttribute : Attribute
[AttributeUsageAttribute(AttributeTargets::Method, Inherited = false)]
[ComVisibleAttribute(true)]
public ref class PreserveSigAttribute sealed : Attribute
[<Sealed>]
[<AttributeUsageAttribute(AttributeTargets.Method, Inherited = false)>]
[<ComVisibleAttribute(true)>]
type PreserveSigAttribute = 
    class
        inherit Attribute
    end
<AttributeUsageAttribute(AttributeTargets.Method, Inherited := False)>
<ComVisibleAttribute(True)>
Public NotInheritable Class PreserveSigAttribute
    Inherits Attribute

Konstruktoren

Name Beschreibung
System_CAPS_pubmethod PreserveSigAttribute()

Initialisiert eine neue Instanz der PreserveSigAttribute-Klasse.

Eigenschaften

Name Beschreibung
System_CAPS_pubproperty TypeId

Ruft bei Implementierung in einer abgeleiteten Klasse einen eindeutigen Bezeichner für dieses Attribute ab.(Geerbt von „Attribute“.)

Methoden

Name Beschreibung
System_CAPS_pubmethod Equals(Object)

Diese API unterstützt die Produkt Infrastruktur und sollte nicht direkt aus dem Code verwendet werden. Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist.(Geerbt von „Attribute“.)

System_CAPS_pubmethod GetHashCode()

Gibt den Hashcode für diese Instanz zurück.(Geerbt von „Attribute“.)

System_CAPS_pubmethod GetType()

Ruft den Type der aktuellen Instanz ab.(Geerbt von „Object“.)

System_CAPS_pubmethod IsDefaultAttribute()

Gibt beim Überschreiben in einer abgeleiteten Klasse an, ob der Wert der Instanz der Standardwert für die abgeleitete Klasse ist.(Geerbt von „Attribute“.)

System_CAPS_pubmethod Match(Object)

Ruft beim Überschreiben in einer abgeleiteten Klasse gibt einen Wert, der angibt, ob diese Instanz gleich ein angegebenen Objekt ist.(Geerbt von „Attribute“.)

System_CAPS_pubmethod ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.(Geerbt von „Object“.)

Explizite Schnittstellenimplementierungen

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

Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu.(Geerbt von „Attribute“.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Ruft die Typinformationen für ein Objekt ab, mit deren Hilfe die Typinformationen für eine Schnittstelle abgerufen werden können.(Geerbt von „Attribute“.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod _Attribute.GetTypeInfoCount(UInt32)

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

System_CAPS_pubinterfaceSystem_CAPS_privmethod _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Stellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit.(Geerbt von „Attribute“.)

Hinweise

Sie können dieses Attribut auf Methoden anwenden.

Wird standardmäßig der Tlbexp.exe (Type Library Exporter) wird sichergestellt, dass ein Aufruf, der ein HRESULT von S_OK transformiert wird, dass [Out, Retval]-Parameter als den Rückgabewert einer Funktion verwendet wird. Das S_OK HRESULT wird verworfen. Für HRESULTs als S_OK zurück, die Laufzeit löst eine Ausnahme aus und verwirft den [Out, Retval]-Parameter. Beim Anwenden der PreserveSigAttribute einer verwalteten Methode-Signatur der verwalteten und nicht verwalteten Signaturen für die attributierte Methode identisch sind.

Beibehalten der ursprünglichen Methodensignatur ist erforderlich, wenn das Element, mehr als einen Erfolg HRESULT-Wert zurückgibt und die verschiedenen Werte erkannt werden sollen. Da die meisten COM-Members ein HRESULT zurückgibt, durch Anwenden der PreserveSigAttribute, können Sie abrufen, eine ganze Zahl, die den Erfolg oder Fehler HRESULT darstellt. Tlbexp.exe behält alle [Out, retval]-Parameter als out-Parameter in der verwalteten Signatur.

Die Tlbimp.exe (Type Library Importer) gilt auch für dieses Attribut; es das Attribut auf Dispatchschnittstellen angewendet, wenn es sich um eine Typbibliothek importiert.

Hinweis

Rückgabetypen von Currency, Guid, und Object werden nicht unterstützt, indem Sie die PreserveSigAttribute Klasse bei der Interoperation von COM an verwalteten Code und verwaltete Code ist mit markiert die PreserveSigAttribute Klasse. Wenn Sie versuchen, verwenden Sie einen der folgenden Rückgabetypen mit der PreserveSigAttribute Klasse während der folgenden Bedingungen eine TypeLoadException ausgelöst wird.

Beispiele

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

Verwaltete Signatur:

int DoSomething (long l);

Nicht verwaltete Signatur:

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

Beim Anwenden von PreserveSigAttribute auf dem C#-Methode und exportieren Sie die Assembly, unterscheidet sich die Methode Konvertierung aus dem vorherigen Beispiel. Beachten Sie, dass Tlbexp.exe HRESULT und [Out, Retval] entfernt Parametermodifizierer.

Verwaltete Signatur:

[PreserveSig] int DoSomething (long l);

Nicht verwaltete Signatur:

int DoSomething ([in] long l);

Versionsinformationen

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 1.1
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Windows Phone
Verfügbar seit 8.1

Threadsicherheit

Alle öffentlichen statischen Member ( Shared in Visual Basic) dieses Typs sind threadsicher. Die Threadsicherheit für Instanzmember ist nicht garantiert.

Siehe auch

System.Runtime.InteropServices-Namespace
Tlbexp.exe (Type Library Exporter)
Tlbimp.exe (Type Library Importer)

Zurück zum Anfang