MethodBuilder.SetMarshal(UnmanagedMarshal) Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Perhatian
An alternate API is available: Emit the MarshalAs custom attribute instead. http://go.microsoft.com/fwlink/?linkid=14202
Mengatur informasi marshaling untuk jenis pengembalian metode ini.
public:
void SetMarshal(System::Reflection::Emit::UnmanagedMarshal ^ unmanagedMarshal);
public void SetMarshal (System.Reflection.Emit.UnmanagedMarshal unmanagedMarshal);
[System.Obsolete("An alternate API is available: Emit the MarshalAs custom attribute instead. http://go.microsoft.com/fwlink/?linkid=14202")]
public void SetMarshal (System.Reflection.Emit.UnmanagedMarshal unmanagedMarshal);
member this.SetMarshal : System.Reflection.Emit.UnmanagedMarshal -> unit
[<System.Obsolete("An alternate API is available: Emit the MarshalAs custom attribute instead. http://go.microsoft.com/fwlink/?linkid=14202")>]
member this.SetMarshal : System.Reflection.Emit.UnmanagedMarshal -> unit
Public Sub SetMarshal (unmanagedMarshal As UnmanagedMarshal)
Parameter
- unmanagedMarshal
- UnmanagedMarshal
Marshaling informasi untuk jenis pengembalian metode ini.
- Atribut
Pengecualian
Jenis yang berisi sebelumnya dibuat menggunakan CreateType().
-atau-
Untuk metode saat ini, IsGenericMethod properti adalah true
, tetapi IsGenericMethodDefinition propertinya adalah false
.
Contoh
Sampel kode di bawah ini menggambarkan penggunaan SetMarshal
kontekstual metode untuk marshal hasil panggilan metode sebagai jenis yang berbeda.
array<Type^>^ temp0 = { String::typeid };
MethodBuilder^ myMethod = myDynamicType->DefineMethod( "MyMethodReturnsMarshal",
MethodAttributes::Public,
UInt32::typeid,
temp0 );
// We want the return value of our dynamic method to be marshalled as
// an 64-bit (8-Byte) signed integer, instead of the default 32-bit
// unsigned int as specified above. The UnmanagedMarshal class can perform
// the type conversion.
UnmanagedMarshal^ marshalMeAsI8 = UnmanagedMarshal::DefineUnmanagedMarshal(
System::Runtime::InteropServices::UnmanagedType::I8 );
myMethod->SetMarshal( marshalMeAsI8 );
MethodBuilder myMethod = myDynamicType.DefineMethod("MyMethodReturnsMarshal",
MethodAttributes.Public,
typeof(uint),
new Type[] { typeof(string) });
// We want the return value of our dynamic method to be marshalled as
// an 64-bit (8-byte) signed integer, instead of the default 32-bit
// unsigned int as specified above. The UnmanagedMarshal class can perform
// the type conversion.
UnmanagedMarshal marshalMeAsI8 = UnmanagedMarshal.DefineUnmanagedMarshal(
System.Runtime.InteropServices.UnmanagedType.I8);
myMethod.SetMarshal(marshalMeAsI8);
Dim myMethod As MethodBuilder = myDynamicType.DefineMethod("MyMethodReturnsMarshal", _
MethodAttributes.Public, GetType(System.UInt32), _
New Type() {GetType(String)})
' We want the return value of our dynamic method to be marshalled as
' an 64-bit (8-byte) signed integer, instead of the default 32-bit
' unsigned int as specified above. The UnmanagedMarshal class can perform
' the type conversion.
Dim marshalMeAsI8 As UnmanagedMarshal = UnmanagedMarshal.DefineUnmanagedMarshal( _
System.Runtime.InteropServices.UnmanagedType.I8)
myMethod.SetMarshal(marshalMeAsI8)