【发布时间】:2010-07-08 04:26:25
【问题描述】:
我有一个 WCF 服务,它接受一个对象作为具有 URI 和方法名称的参数。 我想要做的是有一个看起来@URI的方法,如果它包含单词“localhost”,它将使用反射并调用一个方法,该方法的名称作为参数传入,在同一个类中,返回一个值并继续。
public class Test
{
public GetStatResponse GetStat(GetStatRequest request)
{
GetStatResponse returnValue = new GetStatResponse();
if(Helpers.Contains(request.ServiceURI,"localhost", StringComparison.OrdinalIgnoreCase))
{
MethodInfo mi = this.GetType().GetMethod(request.ServiceMethod /*, BindingFlags.Public | BindingFlags.IgnoreCase*/);
returnValue = (GetStatResponse)mi.Invoke(this,null);
}
以上是与本题相关的代码段。我拉 MethodInfo 没问题,但我在 mi.Invoke 上遇到了问题。我收到的异常是“调用的目标已抛出异常”。带有内部异常“对象引用未设置为对象的实例”。我尝试将代码更改为 (GetStatResponse)mi.Invoke(new Test(), null),但没有成功。测试是类。
我对如何解决这个问题的其他建议持开放态度,我只是认为反思可能是最简单的。
我在测试中调用的方法定义为
public GetStatResponse TestMethod()
{
GetStatResponse returnValue = new GetStatResponse();
Stat stat = new Stat();
Stat.Label = "This is my label";
Stat.ToolTip = "This is my tooltip";
Stat.Value = "this is my value";
returnValue.Stat = stat;
return returnValue;
}
【问题讨论】:
-
目标方法是否需要任何参数?
-
目标方法没有参数
标签: c# wcf reflection