2008-12-01 7 views
0

j'ai quelques classes que je suis en train de passer à l'aide de médicaments génériquesIEnumerator aux génériques.

Class1: Curve

cette classe a le code suivant:

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 

quelle est la conversion recommandée de ces deux classes à l'aide de génériques

Répondre

1

Vous n'avez pas spécifié le type d'être renvoyé du recenseur. mais je vais deviner en fonction des noms, c'est RTRatePoint et CurvePoint. Je change le code pour le

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

class CurvePointEnumerator : IEnumerator<CurvePoint> 

Un élément qui peut vous faire trébucher le suivi est que IEnumerator <T> implémente en outre IDisposable si CurvePointEnumerator et RTRatePointEnumerator devront avoir une méthode Dispose ajouté. Probable que cette méthode peut être à peu près vide. Raison d'être si vous ne disposiez de rien avant, il n'y a pas besoin de maintenant.

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

que devrais-je mettre dans la méthode de disposition ici. . – leora

+0

À moins que vous n'ayez * obtenu * un finalizer, vous n'avez pas besoin de passer un appel à SuppressFinalize. –

+0

Bon appel. Fixé – JaredPar

0

IEnumerable<T> and IEnumerator<T>

Gah, il a avalé mon code

+0

Est-ce que le reste du code reste le même? – leora

Questions connexes