una trabajo son puede propiedad pasar pasaje parámetro parametros para objetos métodos modo metodos metodo los indizador funciones cuáles consola con como básicos c# reflection out-parameters

c# - trabajo - ¿Cómo puedo invocar un método con un parámetro out?



pasar objetos como parametros en c# (2)

Quiero exponer el método WebClient.DownloadDataInternal como a continuación:

[ComVisible(true)] public class MyWebClient : WebClient { private MethodInfo _DownloadDataInternal; public MyWebClient() { _DownloadDataInternal = typeof(WebClient).GetMethod("DownloadDataInternal", BindingFlags.NonPublic | BindingFlags.Instance); } public byte[] DownloadDataInternal(Uri address, out WebRequest request) { _DownloadDataInternal.Invoke(this, new object[] { address, out request }); } }

WebClient.DownloadDataInternal tiene un parámetro out, no sé cómo invocarlo. ¡Ayuda!


Invoca un método con un parámetro de salida por reflexión como cualquier otro método. La diferencia es que el valor devuelto se copiará de nuevo en la matriz de parámetros para que pueda acceder a él desde la función de llamada.

object[] args = new object[] { address, request }; _DownloadDataInternal.Invoke(this, args); request = (WebRequest)args[1];


public class MyWebClient : WebClient { delegate byte[] DownloadDataInternal(Uri address, out WebRequest request); DownloadDataInternal downloadDataInternal; public MyWebClient() { downloadDataInternal = (DownloadDataInternal)Delegate.CreateDelegate( typeof(DownloadDataInternal), this, typeof(WebClient).GetMethod( "DownloadDataInternal", BindingFlags.NonPublic | BindingFlags.Instance)); } public byte[] DownloadDataInternal(Uri address, out WebRequest request) { return downloadDataInternal(address, out request); } }