Пользовательский контроль с перечисляемым источником данных - PullRequest
1 голос
/ 26 августа 2010

Я пытаюсь создать пользовательский элемент управления с источником данных, который может принимать любые формы сбора, такие как List<string> или string[]

Если я проверяю на is IEnumerable, тогда требуетсятип, проверяющий is IEnumerable<Type>, возвращает false, как и is IEnumerable<object>

Какой правильный способ это сделать?Я полагаю, что для свойства DataSource установлено значение object, а затем проверяю в установщике правильный тип?

1 Ответ

1 голос
/ 26 августа 2010

Возможно, вы хотите, чтобы DataSource было не общим IEnumerable. Любой IEnumerable<T> также является IEnumerable, что позволяет вам перечислять коллекцию без строгой типизации, которую дает вам общий интерфейс.

.NET 4.0 вводит ковариацию, поэтому вы можете присвоить IEnumerable<Dog> переменной типа IEnumerable<Animal>. Однако, если вы хотите разрешить любой тип в источнике данных, вам все равно нужно сделать DataSource IEnumerable<object>. Вы не можете ничего сделать с IEnumerable<object>, что вы не можете сделать с IEnumerable.

...