转换面向对象的方法重复泛型方法
本文关键字:泛型方法 方法 面向对象的 转换 | 更新日期: 2023-09-27 18:30:59
我正在使用返回通用结果的方法。但我看到我在重复自己。
我的德索德是这样的:
public Result<Size> ResultForSize(){
var result = new Result<Size>();
try{
result.data = service.GetBySize();
}catch(){
result.hasError = true;
}
}
public Result<Color> ResultForColor(){
var result = new Result<Color>();
try{
result.data = service.GetByColor();
}catch(){
result.hasError = true;
}
}
public Result<Model> ResultForModel(int id){
var result = new Result<Model>();
try{
result.data = service.GetByModdel(id);
}catch(){
result.hasError = true;
}
}
我只看到差异代码块try
try {
result.data = service.GetBySize();
}
如何使用面向对象的方法并为这种重复创建一个简短的解决方案。
您可以按照您的模式创建一个泛型构造函数方法:
public static Result<T> CreateResult<T>(Func<T> constructor)
{
var result = new Result<T>();
try
{
result.data = constructor();
}
catch
{
result.hasError = true;
}
return result;
}
然后从这三种方法调用它:
public Result<Size> ResultForSize()
{
return CreateResult(() => service.GetBySize());
}
public Result<Color> ResultForColor()
{
return CreateResult(() => service.GetByColor());
}
public Result<Model> ResultForModel(int id)
{
return CreateResult(() => service.GetByModdel(id));
}