2 回答
TA贡献1826条经验 获得超6个赞
为什么不创建一个类来表示结果,例如:
class EntityResult<T> {
public EntityResult(T entity) {
Success = true;
Entity = entity;
}
public EntityResult(string error) {
Success = false;
Error = error;
}
bool Success {get; }
T Entity { get; }
string Error { get; }
}
用法如下:
public async Task<EntityResult<Auto>> Create(NewAuto model) {
var auto = new Auto {
Type = model.Type,
Year = model.Year,
// other parameters
};
try {
await _autoDb.Create(auto);
return new EntityResult(auto);
} catch (Exception e) {
// return this error object if something broken
return new EntityResult<Auto>("Error goes here");
}
}
TA贡献1786条经验 获得超13个赞
我不会使用返回类型来表示两种不同的结果,例如成功和失败。这将使代码难以理解,并且随着时间的推移,您(可能)会发现返回类型将被滥用并扩展为包含其他(不相关的?/不必要的?)信息。
将 应用于Single Responsibility Principle
返回类型:
如果调用成功,则返回正确的对象,即
Auto
如果调用失败(即您捕获了异常),则创建一个自定义异常以将该失败传回调用堆栈。您的异常名称将使代码比在通用对象中包含错误更清晰。
此外,如果您使用异常处理而不是具有两个目的的对象,您的调用代码将更加简洁(并且更易于维护)。把事情简单化。
- 2 回答
- 0 关注
- 70 浏览
添加回答
举报