我有一组类型,我想过滤掉每个不具体的类型。
我可以看到我可以检查isAbstract和isInterface以捕获大多数非混凝土,但这会错过任何东西吗?
是否有#34; isConcrete"属性?
答案 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的反面是“具体”,所以你对那些支票很好