次の方法で共有


MethodBuilder.SetMarshal メソッド

このメソッドの戻り値の型のマーシャリング情報を設定します。

Public Sub SetMarshal( _
   ByVal unmanagedMarshal As UnmanagedMarshal _)
[C#]
public void SetMarshal(UnmanagedMarshalunmanagedMarshal);
[C++]
public: void SetMarshal(UnmanagedMarshal* unmanagedMarshal);
[JScript]
public function SetMarshal(
   unmanagedMarshal : UnmanagedMarshal);

パラメータ

  • unmanagedMarshal
    このメソッドの戻り値の型のマーシャリング情報。

例外

例外の種類 条件
InvalidOperationException 格納している型が、 CreateType を使用して既に作成されています。

使用例

[Visual Basic, C#, C++] SetMarshal メソッドを使用して、メソッド呼び出しの結果を別の型としてマーシャリングする方法については、次のコード例を参照してください。

 
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)


[C#] 

    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);    


[C++] 
Type* temp0 [] = {__typeof(String)};
MethodBuilder*  myMethod = myDynamicType->DefineMethod(S"MyMethodReturnsMarshal",
   MethodAttributes::Public,
   __typeof(UInt32),
   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);

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

参照

MethodBuilder クラス | MethodBuilder メンバ | System.Reflection.Emit 名前空間