PreserveSigAttribute Класс

Определение

Указывает, что преобразование подписи HRESULT, которое происходит во время вызовов взаимодействия 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
Наследование
PreserveSigAttribute
Атрибуты

Примеры

В следующем примере показано, как Tlbexp.exe преобразует метод C# без PreserveSigAttribute экспорта сборки в библиотеку типов COM.

Управляемая подпись:

int DoSomething (long l);  

Неуправляемая подпись:

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

При применении к одному методу C# и экспорте сборки преобразование метода отличается PreserveSigAttribute от предыдущего примера. Обратите внимание, что Tlbexp.exe удаляет модификатор параметра HRESULT и [out, retval].

Управляемая подпись:

[PreserveSig] int DoSomething (long l);  

Неуправляемая подпись:

int DoSomething ([in] long l);  

Комментарии

Этот атрибут можно применить к методам.

По умолчанию Tlbexp.exe (экспортер библиотеки типов) гарантирует, что вызов, возвращающий hrESULT S_OK, преобразуется таким образом, что параметр [out, retval] используется в качестве возвращаемого значения функции. S_OK HRESULT удаляется. Для HRESULTs, отличных от S_OK, среда выполнения создает исключение и удаляет параметр [out, retval]. При применении PreserveSigAttribute сигнатуры управляемого метода управляемые и неуправляемые подписи метода атрибута идентичны.

Сохранение исходной сигнатуры метода необходимо, если элемент возвращает несколько значений HRESULT успешного выполнения, и вы хотите обнаружить различные значения. Так как большинство com-членов возвращают HRESULT, применяя PreserveSigAttributeего, можно получить целое число, представляющее успешное или неудачное HRESULT. Tlbexp.exe сохраняет все параметры [out, retval] в качестве параметров в управляемой сигнатуре.

Tlbimp.exe (импорт библиотек типов) также применяет этот атрибут; при импорте библиотеки типов атрибут применяется к неинтерфесациям.

Note

Возвращаемые типы Currency, Guidи Object не поддерживаются классом PreserveSigAttribute при взаимодействии между COM и управляемым кодом, а управляемый код помечается классом PreserveSigAttribute . При попытке использовать один из этих типов возвращаемых данных с классом PreserveSigAttribute во время этих условий TypeLoadException возникает исключение.

Конструкторы

Имя Описание
PreserveSigAttribute()

Инициализирует новый экземпляр класса PreserveSigAttribute.

Свойства

Имя Описание
TypeId

При реализации в производном классе получает уникальный идентификатор для этого Attribute.

(Унаследовано от Attribute)

Методы

Имя Описание
Equals(Object)

Возвращает значение, указывающее, равен ли этот экземпляр указанному объекту.

(Унаследовано от Attribute)
GetHashCode()

Возвращает хэш-код для этого экземпляра.

(Унаследовано от Attribute)
GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
IsDefaultAttribute()

При переопределении в производном классе указывает, является ли значение этого экземпляра значением по умолчанию для производного класса.

(Унаследовано от Attribute)
Match(Object)

При переопределении в производном классе возвращает значение, указывающее, равен ли этот экземпляр указанному объекту.

(Унаследовано от Attribute)
MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Явные реализации интерфейса

Имя Описание
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации.

(Унаследовано от Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Извлекает сведения о типе объекта, который можно использовать для получения сведений о типе для интерфейса.

(Унаследовано от Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1).

(Унаследовано от Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Предоставляет доступ к свойствам и методам, предоставляемым объектом.

(Унаследовано от Attribute)

Применяется к

См. также раздел