【问题标题】:Query for static type in Linq在 Linq 中查询静态类型
【发布时间】:2019-12-29 22:31:45
【问题描述】:

当我使用 Linq 查询抽象类型时,它还会抓取静态类。

IEnumerable<Type> FilterInheritable()
{
     var q = Assembly.Load("Assembly-CSharp").GetTypes()
       .Where(x => x.IsAbstract == true);            

     return q;
}

是否可以过滤掉静态类型?像这样?

IEnumerable<Type> FilterInheritable()
{
     var q = Assembly.Load("Assembly-CSharp").GetTypes()
       .Where(x => x.IsAbstract == true)
       .Where(x => x.IsStatic != true);

     return q;
}

【问题讨论】:

  • 请注意,您不需要将booltrue 进行比较,比较的结果是bool again. So x => x.IsAbstract` 与x =&gt; x.IsAbstract == true 相同。

标签: c# linq


【解决方案1】:

由于static 类在定义上也是sealed,但abstract 类不能是sealed,您可以这样做:

var q = Assembly.Load("Assembly-CSharp").GetTypes()
                .Where(x => x.IsAbstract && x.IsClass && !x.IsSealed);

我也添加了IsClass 以排除接口。

【讨论】:

    猜你喜欢
    • 2013-08-07
    • 1970-01-01
    • 2013-01-28
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-26
    相关资源
    最近更新 更多