Использование атрибута MarshalAsAttribute
Обновлен: Ноябрь 2007
Атрибут MarshalAsAttribute можно использовать для настройки поведения маршалинга. Например, можно выполнять следующие задачи:
Маршалирование массивов и строк в структуру.
Обеспечение необходимой гибкости для поддержки общих сценариев COM-взаимодействия.
Обеспечение целостности при маршалинге типов путем вызова неуправляемого кода и модуля маршалера vtable по сравнению с модулем маршалера IDispatch.
В следующей таблице описывается поддержка маршалинга для значений из перечисления UnmanagedType:
Неуправляемый тип |
Допустимые типы |
Поддержка в структурах |
---|---|---|
BStr, TBStr |
||
LPWStr, LPStr, LPTStr |
Да |
|
IUnknown |
Да |
|
IDispatch |
Да |
|
ByValTStr |
String (только в структурах) |
Да |
ByValArray |
Любой массив |
Да |
SafeArray |
Любой массив |
Да |
VBByRefStr |
||
Bool |
целочисленные типы |
|
I1, I2, I4 |
Целочисленные типы необходимой длины |
|
U1, U2, U4 |
Беззнаковые целочисленные типы необходимой длины |
|
I8 |
Отсутствует |
|
U8 |
Отсутствует |
|
R4 |
4-байтные действительные числа |
|
R8 |
8-байтные действительные числа |
|
Struct |
||
Interface |
||
SysInt, SysUInt |
Целочисленные типы необходимой длины и знаковости |
|
AnsiBStr |
Отсутствует |
|
VariantBool |
||
FunctionPtr |
Отсутствует |
|
AsAny |
Отсутствует |
|
LPArray |
Отсутствует |
|
LPStruct |
Отсутствует |
|
Error |
4-байтные целые числа |
|
Currency |