Проверьте, является ли объект универсальной коллекцией - PullRequest
5 голосов
/ 05 марта 2010

Мы динамически строим некоторые операторы SQL и используем оператор IN. Если наше значение представляет собой набор значений, таких что:

List<Guid> guids = new List<Guid>()

Я хочу иметь возможность предоставить 'guids' моему конструктору предложений, попросить его проверить тип и, если он перечислим, создать предложение типа:

IN ( {Guid1}, {Guid2}, {Guid3} )

Проверка, что значение равно IEnumerable следующим образом:

if (value is IEnumerable)

падает, когда передается строка (что происходит довольно регулярно :)). Каков наилучший способ проверки этого типа условия?

Ответы [ 3 ]

7 голосов
/ 05 марта 2010

Как насчет:

if(value .GetType().IsGenericType && value is IEnumerable)
5 голосов
/ 05 марта 2010

Вы можете попробовать value.GetType().IsGenericType в сочетании с проверкой IEnumerable.

2 голосов
/ 05 марта 2010

А как же:

value is IEnumerable<Guid>

Лучше, если вы ожидаете экземпляров Guid, не так ли?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...