如何比较 类 与 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>();