Приведение интерфейсов с помощью ILIST - PullRequest
4 голосов
/ 22 апреля 2009

У меня есть поле X типа ILIST <ITopics>

Я пытаюсь сделать это:

Object.X= AListOfSometypeThatInheretsITopics;

Как правильно преобразовать список в Object.X?

Ответы [ 3 ]

8 голосов
/ 23 апреля 2009

Для этого требуется общая дисперсия , что, к сожалению, невозможно с IList<T>, поскольку оно выражает интерфейс изменяемого списка. Лучше всего использовать в качестве типа поля / свойства неуниверсальный IList или универсальный IEnumerable<T> (который поддается изменению с C # 4) или преобразовать его с помощью механизма, такого как

x = inputList.OfType<ITopics>().ToList();

для получения списка соответствующего аромата.

2 голосов
/ 23 апреля 2009

Попробуйте

object.x = IList<ITopics>.ofType<ITopics>().ToList()
0 голосов
/ 23 апреля 2009

вы можете использовать IEnumerable<T> метод расширения Cast

Object.X = yourList.Cast<ITopics>().ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...