使用 MarshalAsAttribute 属性
更新:2007 年 11 月
可使用 MarshalAsAttribute 属性自定义封送处理行为。例如,可以执行下列任务:
将数组和字符串封送在结构中。
提供支持公共 COM 互操作方案所需要的灵活性。
相比 IDispatch 封送拆收器,在通过平台调用和 vtable 封送拆收器封送类型时提供一致性。
下表描述了对 UnmanagedType 枚举中的值的封送处理支持。
非托管类型 |
对以下类型有效 |
在结构中是否受支持 |
---|---|---|
BStr, TBStr |
||
LPWStr, LPStr, LPTStr |
是 |
|
IUnknown |
是 |
|
IDispatch |
是 |
|
ByValTStr |
String(仅在结构中) |
是 |
ByValArray |
任何数组 |
是 |
SafeArray |
任何数组 |
是 |
VBByRefStr |
||
Bool |
整数类型 |
|
I1, I2, I4 |
适当长度的整数类型 |
|
U1, U2, U4 |
适当长度的无符号整数类型 |
|
I8 |
N/A |
|
U8 |
N/A |
|
R4 |
4 字节实数 |
|
R8 |
8 字节实数 |
|
Struct |
||
Interface |
||
SysInt, SysUInt |
适当符号和长度的整数类型 |
|
AnsiBStr |
N/A |
|
VariantBool |
||
FunctionPtr |
N/A |
|
AsAny |
N/A |
|
LPArray |
N/A |
|
LPStruct |
N/A |
|
Error |
4 字节整数 |
|
Currency |