在C#中,有一种方法可以使用reflection检索内置数据类型属性

使用reflection我想从C#对象中仅检索内置数据类型属性。 有没有更好的方法,然后使用一堆|| (ors)在Where方法中指定我感兴趣的类型?

 Type sourceType = typeof(TSource); var props = sourceType.GetProperties() .Where(pi => pi.PropertyType == typeof(int) || pi.PropertyType == typeof(string)); // .... etc. 

你在寻找BCL的整体类型吗? 或者只是价值类型? (IE整数,字符等)

如果是这样,你可以测试pi.PropertyType.IsPrimitive()然后测试字符串类型作为or子句的一部分…

 var props = sourceType.GetProperties() .Where(pi => .PropertyType.IsPrimitive || pi.PropertyType == typeof(string)) 

它们都在System命名空间中,因此您至少可以过滤到命名空间,除此之外,至少列表不会太长。 你不会链接Where’s,你使用||的,代码将不起作用。