Самый простой способ создать делегат, когда метод содержит параметр 'ref' - PullRequest
3 голосов
/ 19 января 2012

Допустим, у меня есть этот метод:

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 голосов
/ 19 января 2012

Это не мое приложение, поэтому у меня нет простого способа его тестирования (меня просто спросили, знаю ли я, как решить проблему), но похоже ли это, что оно должно работать?

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