Недавно я начал проект хобби, чтобы переписать структуру коллекций, начиная с удаления не общего IEnumerator
и IEnumerable
, создавая новые базовые интерфейсы IEnumerator/IEnumerable. У меня быстро возникла проблема с выходом при создании преобразования между моим новым перечислимым интерфейсом и обычным.выход не работает с пользовательским перечисляемым/перечислителем
Мои IEnumerable<T>
и IEnumerator<T>
точно такие же, как и обычные, за исключением того, что они не наследуются от не общих. Почему урожайность не работает с моими интерфейсами? foreach
действительно работает с моими интерфейсами.
Пример:
public static System.Collections.Generic.IEnumerable<T> ToMSEnumerable(this My.IEnumerable<T> enumerable)
{
foreach (var item in enumerable) // enumerating my enumerable works
{
yield return item; // this works
}
}
public static My.IEnumerable<T> ToMyEnumerable(this System.Collections.Generic.IEnumerable<T> enumerable)
{
foreach (var item in enumerable) // obviously work
{
yield return item; // this is where its not working.
// I haven't touched this in a few day, so I don't remember
// the error message
}
}
Мне любопытно - что делает ваш 'My.IEnumerable' делать иначе, чем стандартный 'IEnumerable '? –
Enigmativity
@Enigmativity У него нет универсального 'GetEnumerator()' – gbieging
И почему это так важно? – Enigmativity