Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Método MethodBuilder.SetMarshal (UnmanagedMarshal)

 

Publicado: octubre de 2016

Nota: Esta API ahora está obsoleta.

Establece la información de cálculo de referencias para el tipo de valor devuelto del método.

Espacio de nombres:   System.Reflection.Emit
Ensamblado:  mscorlib (en mscorlib.dll)

[ObsoleteAttribute("An alternate API is available: Emit the MarshalAs custom attribute instead. http://go.microsoft.com/fwlink/?linkid=14202")]
public void SetMarshal(
	UnmanagedMarshal unmanagedMarshal
)

Parámetros

unmanagedMarshal
Type: System.Reflection.Emit.UnmanagedMarshal

Información de cálculo de referencias para el tipo de valor devuelto del método.

Exception Condition
InvalidOperationException

El tipo contenedor se ha creado anteriormente mediante CreateType.

-o-

Para el método actual, la propiedad IsGenericMethod es true, pero la propiedad IsGenericMethodDefinition es false.

El ejemplo de código siguiente muestra el uso contextual de la SetMarshal método para calcular las referencias de los resultados de una llamada al método como un tipo diferente.


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

.NET Framework
Disponible desde 1.1
Volver al principio
Mostrar: