假设我创建了像
这样的集合Collection<IMyType> coll;
然后我有许多IMyTypem
的实现,如T1,T2,T3 ......
然后我想知道集合coll是否包含T1类型的实例。所以我想写一个类似
的方法public bool ContainType( <T>){...}
这里的param应该是类类型,而不是类实例。 如何为这类问题编写代码?
答案 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。