c# - 不是可以从通用列表分配通用 IList 吗?

标签 c# .net generics collections

bool IsTypeAGenericList(Type listType)
{
  typeof(IList<>).IsAssignableFrom(listType.GetGenericTypeDefinition())
}

给定 typeof(List<int>) 时返回 false .

我假设这是因为两个类型参数可以不同,对吗?

最佳答案

实际上,这是可行的:

public static bool IsGenericList(Type type)
{
  if (!type.IsGenericType)
    return false;
  var genericArguments = type.GetGenericArguments();
  if (genericArguments.Length != 1)
    return false;

  var listType = typeof (IList<>).MakeGenericType(genericArguments);
  return listType.IsAssignableFrom(type);
}

关于c# - 不是可以从通用列表分配通用 IList 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1177434/

相关文章:

c# - BindingFlags - 获取所有这些(最大成员数)

c# - 一个对象怎么能不和null比较呢?

swift - 难以理解复杂的快速关联类型声明

c# - 即使文件存在,Process.start 也会导致找不到文件

c# - 将数据发布到 asp.net Web API

c# - 如何安全地反序列化键/数据格式 JSON 响应

c# - 清楚地说明自动注册的程序集

C# Lazy <T> & 竞速初始化?

c# - 为什么将泛型显式转换为类类型有限制,而将泛型转换为接口(interface)类型没有限制?

c# - 如何获取泛型表达式中使用的属性类型?