如何编写一个简单的方法来检查一个具体类型是否是自定义结构(使用
仅检查
这些问题大多相同,但没有我需要的答案: 编辑:从提到的答案中,“检查‘System’前缀”是最稳定的(尽管仍然是一个hack)。我最终决定创建一个属性,你必须用它装饰结构体,以便框架将其作为自定义结构体选择。(我认为另一种选择是创建一个空接口,让结构体实现该空接口,但属性方式似乎更优雅)
下面是我原始的自定义结构体检查器,如果有人感兴趣:
public struct { };
创建)。仅检查
Type.IsValueType
是不够的,因为它也适用于int
、long
等类型,而添加!IsPrimitiveType
的检查将不包括decimal
、DateTime
和可能的其他值类型。我知道大多数内置值类型实际上是“结构体”,但我只想检查“自定义结构体”。这些问题大多相同,但没有我需要的答案: 编辑:从提到的答案中,“检查‘System’前缀”是最稳定的(尽管仍然是一个hack)。我最终决定创建一个属性,你必须用它装饰结构体,以便框架将其作为自定义结构体选择。(我认为另一种选择是创建一个空接口,让结构体实现该空接口,但属性方式似乎更优雅)
下面是我原始的自定义结构体检查器,如果有人感兴趣:
type.IsValueType && !type.IsPrimitive && !type.Namespace.StartsWith("System") && !type.IsEnum