ビルドに次のようなエラーがあります。
エラー 12 型 'System.Collections.Generic.IEnumerator< BaseClass>' を 'System.Collections.Generic.IEnumerator< IParentClass>' に暗黙的に変換できません。明示的な変換が存在します (キャストがありませんか?)
単純に捨ててはダメですか?
これは私のコードです:
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!
}
私の質問は、この行を変更することはできますか?
return this.GetEnumerator();
に:
return (IEnumerator<IParentClass>)this.GetEnumerator();
(悪い副作用なしで)?
受け入れられた回答:
関数を次のように変更しました (Jon Skeet の投稿を読んだ後):
IEnumerator<IParentClass> IEnumerable<IParentClass>.GetEnumerator()
{
return this.Map.Values.Cast<IParentClass>().GetEnumerator();
}