Pregunta

Tengo algunas clases a las que estoy tratando de pasar usando genéricos

Clase1: Curva

esta clase tiene el siguiente código:

public class Curve : IEnumerable

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

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

Clase 2:

  public class CurvePointEnumerator : IEnumerator

¿Cuál es la conversión recomendada de estas dos clases para usar genéricos?

¿Fue útil?

Solución

No especificó el tipo que devuelve el enumerador. pero voy a adivinar en base a los nombres que es RTRatePoint y CurvePoint. Cambiaría el código para que sea el siguiente

class Curve: IEnumerable<RTRatePoint> {
  IEnumerator<RTRatePoint> IEnumerable<RTRatePoint>.GetEnumerator() { 
    return GetEnumerator();
  }
  public RTRatePointEnumerator GetEnumerator() {
    return new RTRatePointEnumerator(_hash);
  }
}

class CurvePointEnumerator : IEnumerator<CurvePoint>

Un elemento que puede hacerte tropezar es que IEnumerator < T > además implementa IDisposable, por lo que CurvePointEnumerator y RTRatePointEnumerator necesitarán agregar un método Dispose. Probablemente este método puede estar bastante vacío. La razón es que si no estaba desechando nada antes, no hay necesidad de hacerlo ahora.

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

Otros consejos

IEnumerable<T> and IEnumerator<T>

gah, se tragó mi código

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top