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


Использование атрибута MarshalAsAttribute

Обновлен: Ноябрь 2007

Атрибут MarshalAsAttribute можно использовать для настройки поведения маршалинга. Например, можно выполнять следующие задачи:

  • Маршалирование массивов и строк в структуру.

  • Обеспечение необходимой гибкости для поддержки общих сценариев COM-взаимодействия.

  • Обеспечение целостности при маршалинге типов путем вызова неуправляемого кода и модуля маршалера vtable по сравнению с модулем маршалера IDispatch.

В следующей таблице описывается поддержка маршалинга для значений из перечисления UnmanagedType:

Неуправляемый тип

Допустимые типы

Поддержка в структурах

BStr, TBStr

String

LPWStr,

LPStr, LPTStr

String

Да

IUnknown

Object

Да

IDispatch

Object

Да

ByValTStr

String (только в структурах)

Да

ByValArray

Любой массив

Да

SafeArray

Любой массив

Да

VBByRefStr

String

Bool

Boolean,

целочисленные типы

I1, I2, I4

Целочисленные типы необходимой длины

U1, U2, U4

Беззнаковые целочисленные типы необходимой длины

I8

Отсутствует

U8

Отсутствует

R4

4-байтные действительные числа

R8

8-байтные действительные числа

Struct

Object

Interface

Object

SysInt, SysUInt

Целочисленные типы необходимой длины и знаковости

AnsiBStr

Отсутствует

VariantBool

Boolean

FunctionPtr

Отсутствует

AsAny

Отсутствует

LPArray

Отсутствует

LPStruct

Отсутствует

Error

4-байтные целые числа

Currency

Decimal

См. также

Другие ресурсы

Поддержка маршалинга в .NET Compact Framework