Pergunta

eu tenho algumas classes que eu estou tentando passar a usar os genéricos

Class1: Curva

essa classe tem o seguinte código:

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

O que é a conversão recomendado destas duas classes de usar genéricos

Foi útil?

Solução

Você não especificou o tipo que está sendo retornado do recenseador. mas eu vou adivinhar com base nos nomes É RTRatePoint e CurvePoint. Gostaria de mudar o código para ser o seguinte

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

class CurvePointEnumerator : IEnumerator<CurvePoint>

Um item que pode te enganar é que IEnumerator adicionalmente implementa IDisposable tão CurvePointEnumerator e RTRatePointEnumerator precisará ter um método Dispose acrescentou. Provável que este método pode ser praticamente vazio. Razão de ser se não fosse descartar qualquer coisa antes, não há necessidade de agora.

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

Outras dicas

IEnumerable<T> and IEnumerator<T>

Gah, ele engoliu o meu código

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top