Я реализовал класс, который объединяет несколько объектов IEnumerable в один объект IEnumerable, поэтому я могу написать:
foreach (SomeType item in new CombinedEnumerable<SomeType>(it1, it2))
{
...
}
Где it1 и it2 реализуют интерфейс IEnumerable‹ SomeType >. По эстетическим соображениям и для ясности кода я хотел бы написать:
foreach (SomeType item in it1 + it2)
{
...
}
Все, что мне нужно сделать, это реализовать этот оператор:
public static IEnumerable<T> operator +(IEnumerable<T> t1, IEnumerable<T> t2)
{
return new CombinedEnumerable<T>(t1, t2);
}
Но компилятор не позволит мне это сделать, потому что определение должно быть внутри класса IEnumerable‹ T >. Есть ли обходной путь?
Изменить: возможный дубликат «Как объединить два IEnumerable в новый IEnumerable?» не решил проблему. Эту часть я уже решил. Я спросил, как реализовать оператор «+» (возможно, как метод расширения), что кажется невозможным.