C# - 如何检查Type是否具体?

Ves*_*ian 6 c# types

我有一个类型的集合,我想过滤掉每个不具体的类型.

我可以看到我可以检查isAbstract和isInterface以捕获大多数非混凝土,但这会错过任何东西吗?

是否有"isConcrete"属性?

Wil*_*ler 8

我想如果你IsClass && !IsAbstract尝试一下这可行吗?

if isConcreteType(myType) { DoSomething(); }

bool isConcreteType(Type type) { 
    return type.IsClass && !type.IsAbstract && !type.IsInterface;
}
Run Code Online (Sandbox Code Playgroud)

根据KC-NH的评论:

结构是值类型,因此IsClass将为false.你想结构被认为是具体的类吗?如果是这样,请删除IsClass条件

因此,如果您想将结构视为具体类型,则必须抛弃IsClass约束.

bool isConcreteType(Type type) { return !type.IsAbstract && !type.IsInterfaces; }
Run Code Online (Sandbox Code Playgroud)