2 回答
TA贡献1801条经验 获得超16个赞
我猜你真的想要这个......
public TResponse ExecuteAndLog<TResponse>(Guid id, string Name, Func<TResponse> method) where TResponse : class
{
try
{
Log(id, Name);
TResponse x = method();
Log(id, Name);
}
catch (Exception ex)
{
Log(id, Name);
throw;
}
}
你会用
var response = ExecuteAndLog(someGuid, someName, () => _service.Count(fileDate, cycle));
这样你只需要一个 ExecuteAndLog 的原型。如果您将输入包含在Func(正如您在示例中所做的那样),则必须传递参数,并且对于每个可能的服务调用签名,您都需要不同版本的 ExecuteAndLog。
TA贡献1848条经验 获得超10个赞
如果method应该接收两个参数,则需要传递它们:
public TResponse ExecuteAndLog<T1, T2,TResponse>(Guid id, string Name, Func<T1, T2, TResponse> method, T1 arg1, T2 arg2) where TResponse : class
{
try
{
Log(id, Name);
TResponse x = method(arg1, arg2);
Log(id, Name);
return x;
}
catch (Exception ex)
{
Log(id, Name);
throw;
}
}
- 2 回答
- 0 关注
- 249 浏览
添加回答
举报