C#如何创建一个调用委托给另一个泛型方法的方法

时间:2011-05-11 14:48:53

标签: c# generics delegates lambda

我有这样的代码......

var x = inv.InvokeProxy<ServiceClient, AnotherType, ReturnType>(
    p => p.execute(input), guid);

我要做的是将所有上述代码封装到包含指定类型的委托中。

然后我想创建另一个方法来实际调用上面的方法。像这样......

Func<a,b> func = delegate()
{

.... 1st code sample inserted here ...

}

然后我需要将func传递给另一个将调用它的方法,例如

protected TReturn InvokeDelegate<TReturn>(Func<> functionObject)
{
    return functionObject.Invoke();
}

有谁知道如何做到这一点?

1 个答案:

答案 0 :(得分:2)

这实际上非常简单:

Func<TypeOfInput, Guid, TypeOfX> func = (input, guid) => 
                  inv.InvokeProxy<ServiceClient, AnotherType, ReturnType>(
                                             p => p.execute(input), guid);

执行它:

TypeOfInput yourInput = ...;
Guid yourGuid = ...;
TypeOfX x = func(yourInput, yourGuid);