J'ai une erreur dans ma construction qui dit:Est-ce mal de lancer un énumérateur d'une classe enfant vers un énumérateur d'une classe parente?
Erreur 12 Impossible de convertir implicitement le type 'System.Collections.Generic.IEnumerator < BaseClass>' à « System.Collections.Generic. IEnumerator < IParentClass> '. Une conversion explicite existe (vous manque un casting?)
Est-il tort de simplement le jeter loin?
Ceci est mon code:
public Dictionary<Int32, BaseClass> Map { get; private set; }
public IEnumerator<BaseClass> GetEnumerator()
{
return this.Map.Values.GetEnumerator();
}
public IEnumerator<IParentClass> IEnumerable<IParentClass>.GetEnumerator()
{
return this.GetEnumerator(); // ERROR!
}
Ma question est, je peux juste changer cette ligne:
return this.GetEnumerator();
à:
return (IEnumerator<IParentClass>)this.GetEnumerator();
(sans mauvais effets secondaires) ?
Accepted Réponse:
J'ai changé la fonction à ce qui suit (après avoir lu le message de Jon Skeet):
IEnumerator<IParentClass> IEnumerable<IParentClass>.GetEnumerator()
{
return this.Map.Values.Cast<IParentClass>().GetEnumerator();
}
Impossible de faire avec IEnumerator - vous avez besoin de IEnumerable. (Dans ce cas, utilisez simplement Cast() en premier lieu :) –
Jon m'a battu ... mais encore une fois ... –
J'ai corrigé l'exemple. J'ai également inclus la méthode Cast(). – spoulson