如何确定Type是一个自定义结构?

Yin*_*ing 16 c# struct

对于a Type,IsClassC#中有一个属性,但如何判断a Type是一个结构?

虽然IsValueType是必要条件,但显然还不够.对于a int也是值类型.

有人建议使用以下代码:

bool IsStruct = type.IsValueType && !type.IsEnum && !type.IsPrimitive;
Run Code Online (Sandbox Code Playgroud)

但我不确定这是否是一种准确的方法.式应该告诉结构和其它类型的诸如之间的差DateTime,intarray

正如一些朋友指出的那样,我指的是用户定义的结构而不是预定义的类型,例如DateTime.

Ore*_*ost 9

从技术上讲,int也是一个结构.IsPrimitive只是检查类型是否是CLR处理的原始类型之一.你应该对这个建议没问题IsValueType && !IsEnum && !IsPrimitive.

如果您只想要自定义结构(即那些不是由BCL提供的结构),您可能会幸运地排除具有FullName的类型,该类型"System."通过程序集或命名空间过滤或仅包含您感兴趣的类型,或使用自定义属性.

  • +1或""Microsoft."`或``FSharp."`或...我认为他将很难消除所有这些. (2认同)