Comparteix a través de


PreserveSigAttribute Clase

Definición

Indica que se debe suprimir la transformación de firma HRESULT que tiene lugar durante las llamadas de interoperabilidad COM.

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
Herencia
PreserveSigAttribute
Atributos

Ejemplos

En el ejemplo siguiente se muestra cómo Tlbexp.exe convierte un método de C# sin PreserveSigAttribute al exportar un ensamblado a una biblioteca de tipos COM.

Firma administrada:

int DoSomething (long l);  

Firma no administrada:

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

Cuando se aplica PreserveSigAttribute al mismo método de C# y se exporta el ensamblado, la conversión del método difiere del ejemplo anterior. Observe que Tlbexp.exe quita el HRESULT y el modificador de parámetro [out, retval].

Firma administrada:

[PreserveSig] int DoSomething (long l);  

Firma no administrada:

int DoSomething ([in] long l);  

Comentarios

Puede aplicar este atributo a métodos.

De forma predeterminada, el Tlbexp.exe (Exportador de la biblioteca de tipos) garantiza que una llamada que devuelve un VALOR HRESULT de S_OK se transforma de modo que el parámetro [out, retval] se use como valor devuelto de la función. El S_OK HRESULT se descarta. En el caso de hrESULT distintos de S_OK, el tiempo de ejecución produce una excepción y descarta el parámetro [out, retval]. Cuando se aplica a PreserveSigAttribute una firma de método administrado, las firmas administradas y no administradas del método con atributos son idénticas.

Es necesario conservar la firma del método original si el miembro devuelve más de un valor HRESULT correcto y desea detectar los distintos valores. Dado que la mayoría de los miembros COM devuelven un HRESULT, aplicando PreserveSigAttribute, puede recuperar un entero que represente el valor HRESULT correcto o erróneo. Tlbexp.exe conserva los parámetros [out, retval] como parámetros out en la firma administrada.

El Tlbimp.exe (Importador de biblioteca de tipos) también aplica este atributo; aplica el atributo a dispinterfaces cuando importa una biblioteca de tipos.

Nota

Los tipos devueltos de Currency, Guidy Object no son compatibles con la PreserveSigAttribute clase cuando la interoperación se produce desde COM al código administrado y el código administrado se marca con la PreserveSigAttribute clase . Cuando se intenta usar uno de estos tipos de valor devuelto con la PreserveSigAttribute clase durante estas condiciones, se produce una TypeLoadException excepción .

Constructores

PreserveSigAttribute()

Inicializa una nueva instancia de la clase PreserveSigAttribute.

Propiedades

TypeId

Cuando se implementa en una clase derivada, obtiene un identificador único para este Attribute.

(Heredado de Attribute)

Métodos

Equals(Object)

Devuelve un valor que indica si esta instancia es igual que un objeto especificado.

(Heredado de Attribute)
GetHashCode()

Devuelve el código hash de esta instancia.

(Heredado de Attribute)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
IsDefaultAttribute()

Si se reemplaza en una clase derivada, indica si el valor de esta instancia es el valor predeterminado de la clase derivada.

(Heredado de Attribute)
Match(Object)

Cuando se invalida en una clase derivada, devuelve un valor que indica si esta instancia es igual a un objeto especificado.

(Heredado de Attribute)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Implementaciones de interfaz explícitas

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

Asigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío.

(Heredado de Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Obtiene la información de tipos de un objeto, que puede utilizarse para obtener la información de tipos de una interfaz.

(Heredado de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Recupera el número de interfaces de información de tipo que proporciona un objeto (0 ó 1).

(Heredado de Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Proporciona acceso a las propiedades y los métodos expuestos por un objeto.

(Heredado de Attribute)

Se aplica a

Consulte también