MethodBuilder.SetMarshal(UnmanagedMarshal) Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Dikkat
An alternate API is available: Emit the MarshalAs custom attribute instead. http://go.microsoft.com/fwlink/?linkid=14202
Bu yöntemin dönüş türü için hazırlama bilgilerini ayarlar.
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)
Parametreler
- unmanagedMarshal
- UnmanagedMarshal
Bu yöntemin dönüş türü için hazırlama bilgileri.
- Öznitelikler
Özel durumlar
İçeren tür daha önce kullanılarak CreateType()oluşturulmuştur.
-veya-
Geçerli yöntem IsGenericMethod için özelliği şeklindedir true
, ancak IsGenericMethodDefinition özelliği şeklindedir false
.
Örnekler
Aşağıdaki kod örneği, yöntem çağrısının SetMarshal
sonuçlarını farklı bir tür olarak sıralamak için yönteminin bağlamsal kullanımını gösterir.
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)