Поделиться через


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);  

При применении PreserveSigAttribute к тому же методу C# и экспорте сборки преобразование метода отличается от предыдущего примера. Обратите внимание, что 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 отклоняется. Для HRESULT, отличных от S_OK, среда выполнения создает исключение и отменяет параметр [out, retval]. При применении к сигнатуре PreserveSigAttribute управляемого метода управляемые и неуправляемые подписи метода с атрибутами идентичны.

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

Этот атрибут также применяется вTlbimp.exe (средство импорта библиотек типов); он применяет атрибут к dispinterfaces при импорте библиотеки типов.

Примечание

Типы возвращаемых значений , и не поддерживаются классом PreserveSigAttribute , если происходит взаимодействие из COM в управляемый код и управляемый код помечен классом PreserveSigAttribute .ObjectGuidCurrency При попытке использовать один из этих типов возвращаемых значений с классом 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)

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

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