从 class 数组获取已实现接口的枚举器

Get an enumerator for the implemented interface from a class array

我有这样的功能

sealed class AssignedTasks : IReadonlyAssignedTasks { ... }

interface IReadonlyAssigningInfo : IEnumerable<IReadonlyAssignedTasks> {}
sealed class AssigningInfo : IReadonlyAssigningInfo {
    private readonly AssignedTasks[] _assignedTasks;
    ...
    public IEnumerator<IReadonlyAssignedTasks> GetEnumerator()
    {
        return _assignedTasks.GetEnumerator();
    }
}

我有错误

Cannot implicitly convert type 'System.Collections.IEnumerator' to 'System.Collections.Generic.IEnumerator'. An explicit conversion exists (are you missing a cast?)

问题是您想要 return 接口,而数组包含 class。

您需要在return枚举器

之前投射物品
public IEnumerator<IReadonlyAssignedTasks> GetEnumerator()
{
    return _assignedTasks.Cast<IReadonlyAssignedTasks>().GetEnumerator();
}

因为 _assignedTask 是数组并且 _assignedTasks.GetEnumerator() 将 return IEnumerable 的非通用版本。尝试遵循它会起作用

sealed class AssigningInfo : IReadonlyAssigningInfo {
    private readonly List<AssignedTasks> _assignedTasks;
    ...
    public IEnumerator<IReadonlyAssignedTasks> GetEnumerator()
    {
        return _assignedTasks.GetEnumerator();
    }
}

查看 MSDN 文档 here