从 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。
我有这样的功能
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。