日期:2014-05-18  浏览次数:20769 次

使用反射执行任何定义了返回值的方法,调用之后都返回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看看是否成功。