我的构建中有一个错误,上面写着:
错误 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();
}