У меня есть такая функция
sealed class AssignedTasks : IReadonlyAssignedTasks { ... }
interface IReadonlyAssigningInfo : IEnumerable<IReadonlyAssignedTasks> {}
sealed class AssigningInfo : IReadonlyAssigningInfo {
private readonly AssignedTasks[] _assignedTasks;
...
public IEnumerator<IReadonlyAssignedTasks> GetEnumerator()
{
return _assignedTasks.GetEnumerator();
}
}
У меня ошибка
Невозможно неявно преобразовать тип System.Collections.IEnumerator в System.Collections.Generic.IEnumerator. Существует явное преобразование (вам не хватает приведения?)
2 ответа
Проблема в том, что вы хотите вернуть интерфейс, пока массив содержит класс.
Вам необходимо привести элементы перед возвратом перечислителя
public IEnumerator<IReadonlyAssignedTasks> GetEnumerator()
{
return _assignedTasks.Cast<IReadonlyAssignedTasks>().GetEnumerator();
}
Поскольку _assignedTask является массивом, а _assignedTasks.GetEnumerator () вернет неуниверсальную версию IEnumerable
. Попробуйте следовать, это сработает
sealed class AssigningInfo : IReadonlyAssigningInfo {
private readonly List<AssignedTasks> _assignedTasks;
...
public IEnumerator<IReadonlyAssignedTasks> GetEnumerator()
{
return _assignedTasks.GetEnumerator();
}
}
Загляните в документацию MSDN здесь.
Похожие вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.