使用反射我只想从C#对象中检索built-in data type属性。有没有更好的方法,然后在||
方法中使用一堆Where
(ors)来指定我感兴趣的类型?
Type sourceType = typeof(TSource);
var props = sourceType.GetProperties()
.Where(pi => pi.PropertyType == typeof(int)
|| pi.PropertyType == typeof(string)); // .... etc.
答案 0 :(得分:6)
它们都在System命名空间中,因此您至少可以过滤到命名空间,除此之外,至少列表不会太长。你不会把Where链接到哪里,你使用||的,代码将不起作用。
答案 1 :(得分:5)
您在寻找BCL的整体类型吗?或仅限值类型? (IE整数,字符等)
如果是这样,你可以测试pi.PropertyType.IsPrimitive(),然后测试字符串类型作为or子句的一部分......
var props = sourceType.GetProperties()
.Where(pi => .PropertyType.IsPrimitive
|| pi.PropertyType == typeof(string))