如何使用.NET中的反射来确定和检查程序集中的类型是自定义类型还是基元类型?

Has*_*san 9 c# reflection .net-4.0

是否可以在运行时检查给定类型是自定义数据类型还是.NET的原始数据类型之一?

我在程序集中定义了用户定义的类型,所有类型都是一些结构.我需要调用用户定义类型的方法,其中的参数是那些结构.因此,在使用反射在运行时调用这些函数之前,需要相应地填充数据.

现在是否有任何反射方法可用于跟踪给定数据类型是自定义数据类型还是原始数据类型.我知道IsClass属性,但我的目标用户定义数据类型不是类,这些公共是STRUCTS.

Dan*_*Tao 8

我会选择以下内容:

static bool IsFundamental(this Type type)
{
    return type.IsPrimitive || type.Equals(typeof(string)) || type.Equals(typeof(DateTime));
}
Run Code Online (Sandbox Code Playgroud)

然而,对于返回的类型的选择stringDateTime添加是一个主观问题,因为没有绝对列表......最终的选择是你的(例如,你也可能想包括); 并且应该肯定被记录(至少在一个评论,优选为XML一个).IsPrimitivetruedecimal