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

时间:2010-07-01 21:55:30

标签: c# reflection lambda

使用反射我只想从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.

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:5)

您在寻找BCL的整体类型吗?或仅限值类型? (IE整数,字符等)

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

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