使用反射执行任何定义了返回值的方法,调用之后都返回NULL
在服务端上通过打印的日志可以确定方法已经执行了,但是奇怪的是,调用处没有返回值,测试代码如下:
public bool Test_InitMyReturnType()
{
try
{
string url = xData.Element(c_url_tag).Value;
string dlldir = xData.Element(c_loaddll_tag).Element(c_directory_tag).Value;
string classname = xData.Element(c_loaddll_tag).Element(c_classname_tag).Value;
WSDLServiceProxy proxy = new WSDLServiceProxy();
proxy.LoadingServiceFromDll(dlldir, classname);
proxy.URL = url;
var query = from method in xData.Element(c_methods_tag).Elements(c_method_tag)
select method;
foreach (var item in query)
{
string methodname = item.Attribute(c_name_attr_tag).Value;
MethodInfo method = proxy.ClassType.GetMethod(methodname);
MyWebMethod webmethod = new MyWebMethod(method);
XElement xe = item.Element(c_LoadConfigurationTag);
webmethod.LoadConfiguration(xe);
//测试1次,查看是否每次都能成功解析方法的返回类型
const int c_times = 1;
for (int i = 0; i < c_times; i++)
{
object[] parameterlist = webmethod.CreateParametersInstance(MyInstaceCreateMode.AllOptionalMemberByRandom);
object retobj = proxy.ExecuteMethod(method, parameterlist);
MyWebReturnType rettype = new MyWebReturnType(method.ReturnType, retobj);
}
}
return true;
}
catch
{
return false;
}
}
无论在执行哪个测试方法,retobj的返回值都是NULL,不知道是什么原因,以前这样调用还有返回值的。
求大虾赐教!谢谢!
------解决方案--------------------
这是一个webService的调用呀,debug下吧。先正常调用webservice看看是否成功。