反思得到基本类型

时间:2013-02-14 16:53:21

标签: c# reflection primitive primitive-types

寻找一种方法来获取c#中的基本/核心类型,而不使用使用IsPrimitive和一堆“||”。基本上我想要包含decimal,datetime,string,但我不想专门寻找它们。

我记得看到了检查对象基本类型的效果,看看它是否继承自对象。

有人能指出我正确的方向如何做到这一点吗?

此方法如何对原始的nullables进行分类?

1 个答案:

答案 0 :(得分:2)

如果您想获得所有基本数据类型的列表(这些类型不是那些基本数据类型,它们的行为与其他结构相比有点不同),您将不得不使用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不在列表中,但您可以根据需要添加它)。包含stringdecimal类型,因为可以被视为基本类型。