2 回答

TA貢獻1826條經(jīng)驗 獲得超6個贊
為什么不創(chuàng)建一個類來表示結(jié)果,例如:
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條經(jīng)驗 獲得超13個贊
我不會使用返回類型來表示兩種不同的結(jié)果,例如成功和失敗。這將使代碼難以理解,并且隨著時間的推移,您(可能)會發(fā)現(xiàn)返回類型將被濫用并擴展為包含其他(不相關(guān)的?/不必要的?)信息。
將 應(yīng)用于Single Responsibility Principle
返回類型:
如果調(diào)用成功,則返回正確的對象,即
Auto
如果調(diào)用失?。茨东@了異常),則創(chuàng)建一個自定義異常以將該失敗傳回調(diào)用堆棧。您的異常名稱將使代碼比在通用對象中包含錯誤更清晰。
此外,如果您使用異常處理而不是具有兩個目的的對象,您的調(diào)用代碼將更加簡潔(并且更易于維護)。把事情簡單化。
- 2 回答
- 0 關(guān)注
- 92 瀏覽
添加回答
舉報