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

在C#中,是否有一种方法可以使用反射仅检索内置的数据类型属性,c#,reflection,lambda,C#,Reflection,Lambda,使用反射,我只想从C#对象中检索属性。有没有更好的方法,然后在指定我感兴趣的类型的Where方法中使用一堆|(OR) Type sourceType = typeof(TSource); var props = sourceType.GetProperties() .Where(pi => pi.PropertyType == typeof(int) || pi.PropertyType == typeof(string)); // .... e

使用反射,我只想从C#对象中检索属性。有没有更好的方法,然后在指定我感兴趣的类型的
Where
方法中使用一堆
|
(OR)

Type sourceType = typeof(TSource);

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

它们都在系统名称空间中,所以您至少可以筛选到名称空间,除此之外,至少列表不会太长。你也不会把Where's链接起来,你会使用| |,那代码不会工作。

你是在寻找BCL的整数类型吗?还是仅限值类型?(即整数、字符等)

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

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

非常真实的架线在哪里对生意不利。漫长的一周和我的糟糕,因为我只是在问题中对代码进行了糟糕的思考别担心,你很快就会明白的。打得好,至少能缩小范围。