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

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

C# :具有不同定義的方法的通用方法/包裝器

C# :具有不同定義的方法的通用方法/包裝器

C#
ITMISS 2022-08-20 15:25:43
例如,我有以下方法:    private async Task<T> Read<T>(string id, string endpoint)    {         //....    }    private async Task<List<T>> List<T>(int start, int count, string endpoint, List<FilterData> filterData = null)    {         //....    }(以及更多具有不同屬性的內(nèi)容)但是所有這些方法都可以拋出 如果我調(diào)用方法拋出這個異常,我想執(zhí)行一些邏輯并調(diào)用調(diào)用的方法。即:BillComInvalidSessionException    private async Task<T> ReadWithRetry<T>(string id, string endpoint)    {        try        {            return await Read<T>(id, endpoint);        }        catch (BillComInvalidSessionException)        {            SessionId = new Lazy<string>(() => LoginAsync().Result);            return await ReadWithRetry<T>(id, endpoint);        }    }    private async Task<List<T>> ListWithRetry<T>(int start, int count, string endpoint, List<FilterData> filterData = null)    {        try        {            return await List<T>(start, count, endpoint, filterData);        }        catch (BillComInvalidSessionException)        {            SessionId = new Lazy<string>(() => LoginAsync().Result);            return await ListWithRetry<T>(start, count, endpoint, filterData);        }    }如何創(chuàng)建一個通用方法,它將執(zhí)行相同的邏輯,但獲得不同的方法作為參數(shù)?
查看完整描述

1 回答

?
暮色呼如

TA貢獻1853條經(jīng)驗 獲得超9個贊

您可以通過使用泛型委托來實現(xiàn)此目的:


private async Task<T> Retry<T>(Func<Task<T>> func)

{

    try

    {

        return await func();

    }

    catch (BillComInvalidSessionException)

    {

        SessionId = new Lazy<string>(() => LoginAsync().Result);

        return await Retry(func);

    }

}

然后,您的重試方法將轉(zhuǎn)到:


private async Task<T> ReadWithRetry<T>(string id, string endpoint)

{

    return await Retry(async () => await Read<T>(id, endpoint));

}


private async Task<List<T>> ListWithRetry<T>(int start, int count, string endpoint, List<FilterData> filterData = null)

{

    return await Retry(async () => await List<T>(start, count, endpoint, filterData));

}


查看完整回答
反對 回復(fù) 2022-08-20
  • 1 回答
  • 0 關(guān)注
  • 105 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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