IEnumerator to generics.
-
11-07-2019 - |
Domanda
Ho alcune lezioni che sto cercando di passare a utilizzare generici
Class1: Curve
questa classe ha il seguente codice:
public class Curve : IEnumerable
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator(); // Calls non-interface method
}
public RTRatePointEnumerator GetEnumerator()
{
return new RTRatePointEnumerator(_hash);
}
Classe 2:
public class CurvePointEnumerator : IEnumerator
qual è la conversione consigliata di queste due classi all'utilizzo di generici
Soluzione
Non è stato specificato il tipo restituito dall'enumeratore. ma ho intenzione di indovinare in base ai nomi è RTRatePoint e CurvePoint. Vorrei modificare il codice in modo che sia il seguente
class Curve: IEnumerable<RTRatePoint> {
IEnumerator<RTRatePoint> IEnumerable<RTRatePoint>.GetEnumerator() {
return GetEnumerator();
}
public RTRatePointEnumerator GetEnumerator() {
return new RTRatePointEnumerator(_hash);
}
}
class CurvePointEnumerator : IEnumerator<CurvePoint>
Un elemento che potrebbe farti inciampare è che IEnumerator < T > implementa inoltre IDisposable, quindi CurvePointEnumerator e RTRatePointEnumerator dovranno avere aggiunto un metodo Dispose. Probabilmente questo metodo può essere praticamente vuoto. Il motivo è che se non stavi smaltendo nulla prima, non è necessario ora.
void IDispose.Dispose() {
// Nothing to see here
}
Altri suggerimenti
IEnumerable<T> and IEnumerator<T>
Dio, ha ingoiato il mio codice