The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.
MethodBuilder::SetMarshal Method (UnmanagedMarshal^)
.NET Framework (current version)
Note: This API is now obsolete.
Namespace:
System.Reflection.Emit
Assembly: mscorlib (in mscorlib.dll)
Return to top
Sets marshaling information for the return type of this method.
Assembly: mscorlib (in mscorlib.dll)
public: [ObsoleteAttribute("An alternate API is available: Emit the MarshalAs custom attribute instead. http://go.microsoft.com/fwlink/?linkid=14202")] void SetMarshal( UnmanagedMarshal^ unmanagedMarshal )
Parameters
- unmanagedMarshal
-
Type:
System.Reflection.Emit::UnmanagedMarshal^
Marshaling information for the return type of this method.
| Exception | Condition |
|---|---|
| InvalidOperationException | The containing type was previously created using CreateType. -or- For the current method, the IsGenericMethod property is true, but the IsGenericMethodDefinition property is false. |
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 );
.NET Framework
Available since 1.1
Available since 1.1
Show: