假设我创建收集像如何检测集合是否包含特定类型的实例?
Collection<IMyType> coll;
然后我有IMyTypem
像,T1,T2,T3许多implelentations ...
然后我想知道如果集合科尔包含T1类型的实例。所以我想写一个方法,如
public bool ContainType(<T>){...}
这里param应该是类类型,而不是类实例。 如何为这类问题编写代码?
假设我创建收集像如何检测集合是否包含特定类型的实例?
Collection<IMyType> coll;
然后我有IMyTypem
像,T1,T2,T3许多implelentations ...
然后我想知道如果集合科尔包含T1类型的实例。所以我想写一个方法,如
public bool ContainType(<T>){...}
这里param应该是类类型,而不是类实例。 如何为这类问题编写代码?
你可以这样做:
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。
你可以使用LINQ到对象吗? 您使用的是哪个版本的C#? – wtaniguchi 2010-03-22 19:52:10