Должен ли класс реализовывать IEnumerable для использования Foreach? - PullRequest
15 голосов
/ 24 сентября 2008

Это в C #, у меня есть класс, который я использую из чужой библиотеки DLL. Он не реализует IEnumerable, но имеет 2 метода, которые возвращают IEnumerator. Есть ли способ, которым я могу использовать цикл foreach на них. Класс, который я использую, запечатан.

Ответы [ 11 ]

0 голосов
/ 24 сентября 2008

Вы всегда можете обернуть его, и, кроме того, чтобы быть «доступным для доступа», вам нужен только метод «GetEnumerator» с правильной подписью.


class EnumerableAdapter
{
  ExternalSillyClass _target;

  public EnumerableAdapter(ExternalSillyClass target)
  {
    _target = target;
  }

  public IEnumerable GetEnumerator(){ return _target.SomeMethodThatGivesAnEnumerator(); }

}
...