J'aimerais que mon type implémente IEnumerable<string>
. J'ai essayé de suivre C # en bref, mais quelque chose s'est mal passé:
public class Simulation : IEnumerable<string>
{
private IEnumerable<string> Events()
{
yield return "a";
yield return "b";
}
public IEnumerator<string> GetEnumerator()
{
return Events().GetEnumerator();
}
}
Mais je reçois l'erreur de construction
Erreur 1 "EventSimulator.Simulation" n'implémente pas le membre d'interface "System.Collections.IEnumerable.GetEnumerator ()". 'EventSimulator.Simulation.GetEnumerator ()' ne peut pas implémenter 'System.Collections.IEnumerable.GetEnumerator ()' car il n'a pas le type de retour correspondant de 'System.Collections.IEnumerator'.
Vous manquez IEnumerator IEnumerable.GetEnumerator()
:
public class Simulation : IEnumerable<string>
{
private IEnumerable<string> Events()
{
yield return "a";
yield return "b";
}
public IEnumerator<string> GetEnumerator()
{
return Events().GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
IEnumerable requiert que vous implémentiez à la fois la méthode typée et générique.
Dans la section communauté du msdn docs il explique pourquoi vous avez besoin des deux. (La rétrocompatibilité est la raison invoquée essentiellement).