简体   繁体   English

在 Linq 中查询静态类型

[英]Query for static type in Linq

When I query for abstract types using Linq, it also grabs static classes.当我使用 Linq 查询抽象类型时,它也会获取静态类。

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

     return q;
}

Is it possible to filter out the static types?是否可以过滤掉静态类型? Something like this?像这样的东西?

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

     return q;
}

Since static classes are also sealed by definition, but abstract classes cannot be sealed , you can do this:由于static类也被定义sealed ,但abstract类不能被sealed ,你可以这样做:

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

I added IsClass to exclude interfaces as well.我还添加了IsClass来排除接口。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM