如何比较 类 与 C# 中的泛型类型
How compare classes with generic types in C#
如何使用 is T
编写以下代码
public IList<IElement> OfClass(Type type)
{
return list
.Where(o => o.GetType() == type)
.ToList();
}
像这样:
public IList<IEtabsElement> OfClass(....)
{
return list
.Where(o => o is ...)
.ToList();
}
更新
到目前为止,这是我的解决方案。可以吗?
public IList<IElement> OfClass<T>()
{
return list
.Where(o => o is T)
.ToList();
}
您可以改为创建通用方法:
public IList<T> OfClass<T>()
{
return list
.Where(o => o.GetType() == typeof(T))
.ToList();
}
这可行,但与现有方法相同 OfType
,例如:
var myvehicles = new List<Vehicle> { new Car(), new Bike()};
var mycars = myvehicles.OfType<Car>();
如何使用 is T
public IList<IElement> OfClass(Type type)
{
return list
.Where(o => o.GetType() == type)
.ToList();
}
像这样:
public IList<IEtabsElement> OfClass(....)
{
return list
.Where(o => o is ...)
.ToList();
}
更新 到目前为止,这是我的解决方案。可以吗?
public IList<IElement> OfClass<T>()
{
return list
.Where(o => o is T)
.ToList();
}
您可以改为创建通用方法:
public IList<T> OfClass<T>()
{
return list
.Where(o => o.GetType() == typeof(T))
.ToList();
}
这可行,但与现有方法相同 OfType
,例如:
var myvehicles = new List<Vehicle> { new Car(), new Bike()};
var mycars = myvehicles.OfType<Car>();