2 回答
TA贡献1858条经验 获得超8个赞
由于您没有任何必须使用的反射实例。T
if (typeof(T).GetInterfaces().Any(
i => i.IsGenericType && i.GetGenericTypeDefinition() == typeof(ICollectionResponse<>)))
{
Console.WriteLine($"Do something for {param}");
}
IsGenericType用于查找任何通用接口 - 在此示例中,它过滤掉了也由 返回的接口。IReponseGetInterfaces()
然后从哪个是我们要检查的类型移动到哪个类型。因为我们不知道是什么。GetGenericTypeDefinitionICollectionResponse<Employee>ICollectionResponse<>Employee
正如注释中指出的那样,可以实现多个接口,例如 .上面的代码将运行“做某事”语句,并且不关心是否有一个匹配项或多个匹配项。在不知道更多范围的情况下,不能说这是否是一个问题。ICollectionResponse<Employee>, ICollectionResponse<Person>
TA贡献1860条经验 获得超8个赞
这对你有用吗?
List<bool> list = new List<bool>();
foreach (var i in list.GetType().GetInterfaces())
{
if (i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IList<>))
{ }
}
- 2 回答
- 0 关注
- 120 浏览
添加回答
举报
