Frage

ich habe ein paar Klassen, die ich zur Verwendung von Generika zu bewegen versuchen

Class1: Kurve

Diese Klasse hat den folgenden Code:

public class Curve : IEnumerable

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

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

Klasse 2:

  public class CurvePointEnumerator : IEnumerator

Was ist die empfohlene Umwandlung dieser beiden Klassen zur Verwendung von Generika

War es hilfreich?

Lösung

Sie nicht angeben, der Typ aus dem enumerator zurückgegeben werden. aber ich werde auf die Namen erraten basiert es ist RTRatePoint und Stützpunkt. Ich würde den Code ändern die folgende

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

class CurvePointEnumerator : IEnumerator<CurvePoint>

Ein Element, das Sie nach oben auslösen kann, ist, dass IEnumerator zusätzlich implementiert IDisposable so CurvePointEnumerator und RTRatePointEnumerator wird eine Dispose-Methode hinzugefügt haben müssen. Wahrscheinlich obwohl diese Methode ziemlich leer sein kann. Grund dafür ist, wenn Sie vor nichts Entsorgung wurden, gibt es keine Notwendigkeit, jetzt zu.

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

Andere Tipps

IEnumerable<T> and IEnumerator<T>

gah, es geschluckt meinen Code

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top