如何编写一个简单的方法,检查具体类型是否是自定义结构(使用public struct { };)创建.
检查Type.IsValueType是不够的,因为这也是千真万确的int,long等,并增加了检查,!IsPrimitiveType将不排除decimal,DateTime也许有些其他值类型.我知道大多数内置值类型实际上是"结构",但我只想检查"自定义结构"
这些问题大致相同但没有我需要的答案:
编辑:从提到的答案"检查'系统'前缀"是最稳定的(虽然它仍然是一个黑客).我最终决定创建一个你必须用它来装饰结构的属性,以便框架将它作为自定义结构来选择.(我想的另一个选择是创建一个空接口,让struct实现那个空接口,但属性方式似乎更优雅)
这是我原来的自定义结构检查器,如果有人感兴趣:
type.IsValueType && !type.IsPrimitive && !type.Namespace.StartsWith("System") && !type.IsEnum
Run Code Online (Sandbox Code Playgroud)