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>

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<>))
{ }
}
- 2 回答
- 0 關(guān)注
- 111 瀏覽
添加回答
舉報(bào)