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

时间:2014-09-12 15:57:12

标签: c# types

我有一组类型,我想过滤掉每个不具体的类型。

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

是否有#34; isConcrete"属性?

2 个答案:

答案 0 :(得分:7)

我想如果你试试IsClass && !IsAbstract这可能有用吗?

if isConcreteType(myType) { DoSomething(); }

bool isConcreteType(Type type) { 
    return type.IsClass && !type.IsAbstract && !type.IsInterface;
}

根据KC-NH的评论:

  

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

因此,如果您想考虑struct具体类型,则必须抛弃IsClass约束。

bool isConcreteType(Type type) { return !type.IsAbstract && !type.IsInterfaces; }

答案 1 :(得分:2)

IsAbstract的反面是“具体”,所以你对那些支票很好