Вопрос

у меня есть несколько классов, к которым я пытаюсь перейти, используя дженерики

Класс1:Изгиб

этот класс имеет следующий код:

public class Curve : IEnumerable

  IEnumerator IEnumerable.GetEnumerator()
    {
        return GetEnumerator(); // Calls non-interface method
    }

  public RTRatePointEnumerator GetEnumerator()
    {
        return new RTRatePointEnumerator(_hash);
    }

Класс 2:

  public class CurvePointEnumerator : IEnumerator

каково рекомендуемое преобразование этих двух классов для использования дженериков

Это было полезно?

Решение

Вы не указали тип, возвращаемый из перечислителя. но я собираюсь угадать, исходя из названий, это 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 < T > дополнительно реализует IDisposable, поэтому для CurvePointEnumerator и RTRatePointEnumerator потребуется добавить метод Dispose. Вероятно, хотя этот метод может быть почти пустым. Причина в том, что если ты раньше ничего не выбрасывал, то сейчас нет необходимости.

void IDispose.Dispose() {
  // Nothing to see here
}

Другие советы

IEnumerable<T> and IEnumerator<T>

хах, он проглотил мой код

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top