当方法包含'ref'参数时,最简单的方法来创建委托

时间:2012-01-19 18:03:49

标签: c# .net-4.0 delegates

假设我有这种方法:

public static object CallMethod(Delegate method, params object[] args)
{
    //more logic
    return method.DynamicInvoke(args);
}

以下内容适用于大多数情况,称之为(简单示例):

Delegate methodCall = new Func<decimal,decimal>(Math.Ceiling);
object callResult = CallMethod(methodCall, myNumber);

但是,我遇到了一种情况,我需要在一个接受'ref'参数(WCF服务调用)的方法上使用它,这是Func类无法处理的。

Delegate methodCall =
    new Func<MyService.InputClass, MyService.CallResult>(service.DoWork);

由于我没有很多处理代表的经验,为上述方法创建委托的最简单方法是什么??

1 个答案:

答案 0 :(得分:0)

这不是我的应用程序所以我没有一种简单的方法来测试它(我只是被问到我是否知道解决问题的方法),但这看起来应该有效吗?

Delegate methodCall = new Func<MyService.CallResult>(delegate() { return service.DoWork(ref myInput)});
object callResult = CallMethod(methodCall, null);