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 名前空間