在C#中,我的所有代码几乎都是这样的,SomeMethod是唯一不同的地方,但所有的请求模型都继承了一些父模型。
try
{
response = SomeMethod(requestModel);
}
catch (Exception ex)
{
this.logger.Log(ex.MoreDetails());
response = this.BadRequest();
}
SomeMethod是唯一不同的东西,但所有的请求模型都继承了一些父模型.有什么技巧可以让我不必在所有的代码上重复这样的代码吗?响应也使用相同的通用模型。
你可以创建一个方法来接受 Func
作为参数。
class Request{}
class BadRequest:Request{}
class AnotherRequest:Request{}
static Request HandleException(Func<Request> f)
{
Request result ;
try
{
result = f();
}
catch (Exception ex)
{
result = new BadRequest();
}
return result;
}
static AnotherRequest SomeMethod(int i) => new AnotherRequest();
和用法:
Request result = HandleException(() => SomeMethod(1));