MissingMethodException但我不明白为什么

Don*_*lle 4 c# reflection wcf

我正在通过反射创建一个程序集,然后使用它来创建一个WCF服务客户端的实例.

object obj = 
   assembly.CreateInstance(
       serviceName, true, 
       BindingFlags.CreateInstance,null,createArgs, null, null);

Type type = obj.GetType();
Run Code Online (Sandbox Code Playgroud)

obj 是HelloWorldServiceClient类型.

type.GetMethods()有14个MethodInfo结果.第一个是{Acme.TestService.HelloWorldResponse HelloWorld(Acme.TestService.HelloWorldRequest)}

但是,当我这样做

return (T)type.InvokeMember(
    "HelloWorld", BindingFlags.InvokeMethod, null, obj, args);
Run Code Online (Sandbox Code Playgroud)

我得到一个MissingMethodException.

type.ContainsGenericParameters = false.

args是object [1]并包含一个{Acme.TestService.HelloWorldRequest}.

我非常困惑.谁能帮我吗?

小智 5

您也可以使用GetMethod(methodName)而不是Invoke它.如果动态创建程序集,我会建议这两个步骤.通过这种方式,您可以首先找到该方法,然后再调用它.