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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

檢查泛型類(lèi)型是否繼承自泛型接口

檢查泛型類(lèi)型是否繼承自泛型接口

C#
寶慕林4294392 2022-08-20 15:08:36
我有一個(gè)基本接口,IResponse...public interface IResponse{    int CurrentPage { get; set; }    int PageCount { get; set; }}...一個(gè)通用接口,ICollectionResponse,它繼承自基本接口...public interface ICollectionResponse<T> : IResponse{    List<T> Collection { get; set; }}...和一個(gè)類(lèi),EmployeesResponse,它繼承自通用接口,隨后繼承自基本接口...public class EmployeesResponse : ICollectionResponse<Employee>{    public int CurrentPage { get; set; }    public int PageCount { get; set; }    public List<Employee> Collection { get; set; }}public class Employee{    public string FirstName { get; set; }    public string LastName { get; set; }}我的問(wèn)題就在這里。我有一個(gè)通用任務(wù)方法,它返回基本接口的實(shí)例 IResponse。在此方法中,我需要確定 T 是否從 ICollectionResponse 實(shí)現(xiàn)。public class Api{    public async Task<IResponse> GetAsync<T>(string param)    {        // **If T implements ICollectionResponse<>, do something**        return default(IResponse);    }}我已經(jīng)嘗試了所有版本的 IsAssignableFrom() 方法,但沒(méi)有成功,包括:typeof(ICollectionResponse<>).IsAssignableFrom(typeof(T))我感謝任何反饋。
查看完整描述

2 回答

?
猛跑小豬

TA貢獻(xiàn)1858條經(jīng)驗(yàn) 獲得超8個(gè)贊

由于您沒(méi)有任何必須使用的反射實(shí)例。T


if (typeof(T).GetInterfaces().Any(

  i => i.IsGenericType && i.GetGenericTypeDefinition() == typeof(ICollectionResponse<>)))

{

  Console.WriteLine($"Do something for {param}");

}

IsGenericType用于查找任何通用接口 - 在此示例中,它過(guò)濾掉了也由 返回的接口。IReponseGetInterfaces()


然后從哪個(gè)是我們要檢查的類(lèi)型移動(dòng)到哪個(gè)類(lèi)型。因?yàn)槲覀儾恢朗鞘裁础etGenericTypeDefinitionICollectionResponse<Employee>ICollectionResponse<>Employee


正如注釋中指出的那樣,可以實(shí)現(xiàn)多個(gè)接口,例如 .上面的代碼將運(yùn)行“做某事”語(yǔ)句,并且不關(guān)心是否有一個(gè)匹配項(xiàng)或多個(gè)匹配項(xiàng)。在不知道更多范圍的情況下,不能說(shuō)這是否是一個(gè)問(wèn)題。ICollectionResponse<Employee>, ICollectionResponse<Person>


查看完整回答
反對(duì) 回復(fù) 2022-08-20
?
桃花長(zhǎng)相依

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超8個(gè)贊

這對(duì)你有用嗎?


List<bool> list = new List<bool>();


foreach (var i in list.GetType().GetInterfaces())

{

  if (i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IList<>))

  { }

}


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

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

公眾號(hào)

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