MethodBuilder.SetMarshal(UnmanagedMarshal) メソッド

定義

警告

この API は現在使われていません。

このメソッドの戻り値の型のマーシャリング情報を設定します。Sets marshaling information for the return type of this method.

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);
[System.Obsolete("An alternate API is available: Emit the MarshalAs custom attribute instead.")]
public void SetMarshal (System.Reflection.Emit.UnmanagedMarshal unmanagedMarshal);
member this.SetMarshal : System.Reflection.Emit.UnmanagedMarshal -> unit
Public Sub SetMarshal (unmanagedMarshal As UnmanagedMarshal)

パラメーター

unmanagedMarshal
UnmanagedMarshal

このメソッドの戻り値の型のマーシャリング情報。Marshaling information for the return type of this method.

属性

例外

格納先の型は、 CreateType()を使用して以前に作成されています。The containing type was previously created using CreateType().

または-or- 現在のメソッドの場合、 IsGenericMethod プロパティは trueですが、 IsGenericMethodDefinition プロパティは falseです。For the current method, the IsGenericMethod property is true, but the IsGenericMethodDefinition property is false.

次のコードサンプルは、メソッド呼び出しの結果を別の型としてマーシャリングするための SetMarshal メソッドのコンテキスト使用法を示しています。The code sample below illustrates the contextual usage of the SetMarshal method to marshal the results of a method call as a different type.

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)

適用対象