如何检测集合是否包含特定类型的实例?

时间:2010-03-22 19:48:19

标签: c# collections

假设我创建了像

这样的集合
Collection<IMyType> coll;

然后我有许多IMyTypem的实现,如T1,T2,T3 ......

然后我想知道集合coll是否包含T1类型的实例。所以我想写一个类似

的方法
public bool ContainType( <T>){...}

这里的param应该是类类型,而不是类实例。 如何为这类问题编写代码?

1 个答案:

答案 0 :(得分:9)

你可以这样做:

 public bool ContainsType(this IEnumerable collection, Type type)
 {
      return collection.Any(i => i.GetType() == type);
 }

然后称之为:

 bool hasType = coll.ContainsType(typeof(T1));

如果要查看集合是否包含可转换为指定类型的类型,您可以执行以下操作:

bool hasType = coll.OfType<T1>().Any();

这是不同的,因为如果coll包含T1的任何子类,它将返回true。