寻找一种在不使用 IsPrimitive 和一堆“||”的情况下在 c# 中获取基本/核心类型的方法。基本上我希望包含小数、日期时间、字符串,但我不想专门寻找它们。
我记得看到检查对象的基本类型的效果,看看它是否从对象继承。
有人能指出我正确的方向吗?
此外,此方法如何对原始可空对象进行分类?
寻找一种在不使用 IsPrimitive 和一堆“||”的情况下在 c# 中获取基本/核心类型的方法。基本上我希望包含小数、日期时间、字符串,但我不想专门寻找它们。
我记得看到检查对象的基本类型的效果,看看它是否从对象继承。
有人能指出我正确的方向吗?
此外,此方法如何对原始可空对象进行分类?
如果您想获取所有基本数据类型的列表(一开始并不是那么基本,与其他结构相比,它们的行为略有不同),您将不得不使用IsPrimitive
. 我可以理解不想使用||
,但IsPrimitive
对我来说很有意义。
此外,DateTime
没有充分的理由被认为是基本的/原始的。DateTime
只是你的常规结构。
这是我能想到的最好的方法:
List<Type> types = typeof(string).Assembly.GetTypes()
.Where(t => t.IsPrimitive).ToList();
types.Add(typeof(string));
types.Add(typeof(decimal));
这将在 mscorlib ( typeof(string).Assembly
) 中搜索任何类型,并且只选择原语(System.DateTime
不在列表中,但您可以根据需要添加它)。包括string
anddecimal
类型是因为它们可以被认为是基本类型。