В C # есть способ получить только встроенные свойства типа данных, используя отражение - PullRequest
4 голосов
/ 02 июля 2010

Используя отражение, я хотел бы получить только свойства встроенного типа данных из объекта C #.Есть ли лучший способ сделать это, используя группу || (или) в методе Where, указав интересующие меня типы?

Type sourceType = typeof(TSource);

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

Ответы [ 2 ]

6 голосов
/ 02 июля 2010

Все они находятся в пространстве имен System, так что вы можете, по крайней мере, фильтровать пространство имен, кроме этого, по крайней мере, список не слишком длинный.Вы бы не связали Где, вы бы использовали ||, этот код не будет работать.

5 голосов
/ 02 июля 2010

Вы ищете интегральные типы для BCL?Или только типы значений?(IE целое число, символ и т. Д.)

Если это так, вы можете проверить на pi.PropertyType.IsPrimitive (), а затем проверить тип строки как часть предложения or ...

var props = sourceType.GetProperties()
    .Where(pi => .PropertyType.IsPrimitive
              || pi.PropertyType == typeof(string))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...