IEnumerador de genéricos.
-
11-07-2019 - |
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?
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