我想暴露WebClient.DownloadDataInternal方法,像下面这样:
[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有一个输出(out)参数,我不知道如何调用它。 求助!
Invoke
版本,那么请确保对于输出参数使用Type.MakeByRefType
实例方法。(这里不相关,但在我的情况下是需要的!) - Kenneth K.Type :: GetMethods
等),然后从其MethodInfo :: Invoke
中调用特定的方法。这样可以避免重载、参数类型列表等问题。此外,你可以将方法分辨错误与调用错误分开--当有什么问题时非常好用。 - hypersw