Добавить элементы из ObjectCollection в IList (Of SomeType) - PullRequest
2 голосов
/ 12 ноября 2010

Как я могу добавить элементы ObjectCollection в IList (Of SomeType)?Я пытался с:

For Each obj As SomeType In listBox.Items 'ObjectCollection
    MyObject.ItProperty.Add(obj) 'IList
Next

Не удалось.Спасибо.

Ответы [ 2 ]

1 голос
/ 12 ноября 2010

Если возможно, простейшим подходом будет неуниверсальный интерфейс IList:

IList list = (IList)MyObject.ItProperty;
list.Add(obj);

В противном случае вам придется:

  • найти соответствующий T (используя отражение)
  • разрешить метод Add из IList<T> (используя отражение)
  • вызвать метод Add (используя отражение)

такое отражение, особенно в отношении дженериков, не очень приятно.

В качестве альтернативы - если у вас 4.0, вы можете попробовать использовать dynamic, но учтите, что это видит только общедоступный API.Хотя стоит попробовать (только в случае неудачи IList):

dynamic list = MyObject.ItProperty;
list.Add(obj); // let's hope Add isn't an explicit interface implementation
0 голосов
/ 08 февраля 2011

Можете ли вы добавить некоторые подробности о том, что терпит неудачу и где? Ваш код должен работать.

Если вы получаете исключение "Unable to cast object of type 'XXX' to type 'SomeType'." в строке "For Each obj", то в коллекции listBox.Items есть хотя бы элемент, который не относится к типу SomeType.

...