您好,
我有一个带有大量操作的服务器,我需要在客户端的一个特殊方法中包含调用,如果调用失败,它会尝试重新连接。
我的服务操作总是如下:
[MySpecialResponse] MyServiceOperation([MySpecialRequest] request)
我需要一个像这样的方法(Pseudocode):
DoServiceCall<MySpecialResponse>(MyServiceOperation(request));
public T DoServiceCall<T>(ServiceMethod)
{
return ServiceMethod(request);
}
我不确定如何使用泛型,请求帮助。
答案 0 :(得分:0)
也许你想做像
这样的事情public TResult DoServiceCall<T, TResult>(Func(T, TResult) operation, T request)
{
// Your wrapping here
return operation(request);
// and here?
}
所以,你会像这样使用它。
MySpecialResponse response = DoServiceCall(MyServiveOperation, request)
如果您的服务操作采用不同数量的参数,则需要相应地重载DoServiceCall
。
修改强>
我写了这个控制台应用来证明它有效
class Program
{
static void Main()
{
Console.WriteLine(DoServiceCall(times2, 5));
Console.ReadKey();
}
public static TResult DoServiceCall<T, TResult>(Func<T, TResult> operation,
T request)
{
return operation(request);
}
private static int times2(int x)
{
return 2 * x;
}
}