Вы не указали тип, возвращаемый из перечислителя. но я собираюсь угадать, исходя из названий, это RTRatePoint и CurvePoint. Я бы изменил код следующим образом
class Curve: IEnumerable<RTRatePoint> {
IEnumerator<RTRatePoint> IEnumerable<RTRatePoint>.GetEnumerator() {
return GetEnumerator();
}
public RTRatePointEnumerator GetEnumerator() {
return new RTRatePointEnumerator(_hash);
}
}
class CurvePointEnumerator : IEnumerator<CurvePoint>
Одна вещь, которая может сбить вас с толку, заключается в том, что IEnumerator дополнительно реализует IDisposable, поэтому CurvePointEnumerator и RTRatePointEnumerator потребуется добавить метод Dispose. Вероятно, хотя этот метод может быть в значительной степени пустым. Причина в том, что если ты раньше ничего не выбрасывал, то сейчас нет необходимости.
void IDispose.Dispose() {
// Nothing to see here
}