我有这样的功能
sealed class AssignedTasks : IReadonlyAssignedTasks { ... }
interface IReadonlyAssigningInfo : IEnumerable<IReadonlyAssignedTasks> {}
sealed class AssigningInfo : IReadonlyAssigningInfo {
private readonly AssignedTasks[] _assignedTasks;
...
public IEnumerator<IReadonlyAssignedTasks> GetEnumerator()
{
return _assignedTasks.GetEnumerator();
}
}
我有错误
无法隐式转换类型&#39; System.Collections.IEnumerator&#39;至 &#39; System.Collections.Generic.IEnumerator&#39 ;. 存在显式转换(您是否错过了演员?)
答案 0 :(得分:1)
问题是你想在数组包含类时返回接口。
您需要在返回枚举器之前强制转换项目
public IEnumerator<IReadonlyAssignedTasks> GetEnumerator()
{
return _assignedTasks.Cast<IReadonlyAssignedTasks>().GetEnumerator();
}
答案 1 :(得分:0)
因为_assignedTask是数组而_assignedTasks.GetEnumerator()将返回IEnumerable
的非泛型版本。尝试以下它可以工作
sealed class AssigningInfo : IReadonlyAssigningInfo {
private readonly List<AssignedTasks> _assignedTasks;
...
public IEnumerator<IReadonlyAssignedTasks> GetEnumerator()
{
return _assignedTasks.GetEnumerator();
}
}
查看MSDN文档here。