Задать вопрос
@pmatveev

Наследование в C#: изменение возвращаемого типа — как исправить ошибку?

abstract class ALauncher
   {
       protected abstract Object parseArgs(string[] args);
   }

   class Launcher : ALauncher
   {
       protected override ABitFileManager parseArgs(string[] args) {...}
   }


Почему возникает ошибка наследования? Ведь ABitFileManager является наследником Object (как и любой другой класс)?
  • Вопрос задан
  • 2654 просмотра
Подписаться 3 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
  • Нетология
    Разработчик игр на Unity
    13 месяцев
    Далее
  • XYZ School
    Разработка игр на Unity
    5 месяцев
    Далее
Решения вопроса 1
C# не поддерживает return type covariance.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Nirvano
@Nirvano
Обобщения могут вам, наверно, помочь.

interface ILauncher
  {
    object ParseArgs(string[] args);
  }

  abstract class ALanucher<T> : ILauncher
  {
    protected abstract T ParseArgs(string[] args);

    object ILanucher.ParseArgs(string[] args)
    {
      return ParseArgs(args);
    }
  }

  class Launcher : ALanucher<int>
  {
    protected override int ParseArgs(string[] args)
    {
      throw new NotImplementedException();
    }
  }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы