Usando o atributo MarshalAsAttribute
Você pode usar o MarshalAsAttribute atributo para personalizar o comportamento do marshaling. Por exemplo, você pode executar as seguintes tarefas:
Empacotar matrizes e sequências em uma estrutura.
Fornecer flexibilidade para suportar cenários comuns com a interoperabilidade necessária.
Fornecer consistência no marshaling de tipos por meio da plataforma e empacotador vtable sistema autônomo comparado com o IDispatch empacotador.
A tabela a seguir descreve o suporte de marshaling para os valores a partir de UnmanagedType enumeração.
Tipos não gerenciados |
Tipos válidos no |
Suportados nas estruturas |
---|---|---|
BStr, TBStr |
||
LPWStr, LPStr, LPTStr |
Sim |
|
IUnknown |
Sim |
|
IDispatch |
Sim |
|
ByValTStr |
String (nas estruturas somente) |
Sim |
ByValArray |
Qualquer matriz |
Sim |
SafeArray |
Qualquer matriz |
Sim |
VBByRefStr |
||
Bool |
Tipos inteiros |
|
I1, I2, I4 |
Tipos inteiros de tamanho apropriado |
|
U1, U2, U4 |
Tipos inteiro sem-sinal de tamanho apropriado |
|
I8 |
N/A |
|
U8 |
N/A |
|
R4 |
Números reais de 4 bytes |
|
R8 |
Números reais de 8 bytes |
|
Struct |
||
Interface |
||
SysInt, SysUInt |
Tipos inteiros de sinal e comprimento apropriados |
|
AnsiBStr |
N/A |
|
VariantBool |
||
FunctionPtr |
N/A |
|
AsAny |
N/A |
|
LPArray |
N/A |
|
LPStruct |
N/A |
|
Error |
Inteiros de 4 bytes |
|
Currency |