第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

以相同的格式處理錯誤和成功

以相同的格式處理錯誤和成功

C#
繁華開滿天機 2022-10-23 15:14:20
我正在嘗試創(chuàng)建一個更強大的方法,該方法根據(jù)結(jié)果返回兩種不同的對象類型。如果結(jié)果為負,則返回 CustomError 對象,但如果結(jié)果為正,則返回 Auto 對象。下面的例子來演示。自動服務(wù).cspublic class AutoService {        public async Task<object> Create(NewAuto model)        {            var auto = new Auto {              Type = model.Type,              Year = model.Year,              // other parameters            }            try {            await _autoDb.Create(auto);            }                catch (Exception e) {// return this error object if something broken                return new CustomError { Message = "It is broken" }                }//return the Auto entity if successful                return auto;            }    }自定義錯誤.cspublic class CustomError {     public string Message {get;set;}}在當前格式中,當調(diào)用 Create 方法時,我需要轉(zhuǎn)換結(jié)果,這會帶來令人頭疼的問題(例如,針對 CustomError 或 Auto 類進行轉(zhuǎn)換)。有什么建議我可以如何正確地做到這一點?
查看完整描述

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");

    }

}


查看完整回答
反對 回復 2022-10-23
?
開滿天機

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)用代碼將更加簡潔(并且更易于維護)。把事情簡單化。


查看完整回答
反對 回復 2022-10-23
  • 2 回答
  • 0 關(guān)注
  • 92 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號