如何在C#中将类与泛型类型进行比较

时间:2017-01-09 23:32:05

标签: c# generics generic-type-argument

如何使用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();
}

1 个答案:

答案 0 :(得分:2)

您可以改为创建通用方法:

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>();