Как организовать следующую задачу c#

173
19 октября 2021, 03:50

Есть абстрактный класс "Работник" с абстрактным методом "Подсчитать зараплату", от него наследуются два класса реализующие этот метод, "Наёмный работник" зарплата считается за кол-во подрядов. И "Штатный работник" со своей схемой подсчета. В абстрактном классе есть поля ФИО, у классов-наследников есть свои индивидуальные поля, и методы для их изменения/считывания (типо get set). В программе есть список состоящий из классов "Работник", и два метода добавления нового работника, первый для наёмника второй для штатного (с разными полями разумеется). Эти методы приводят наследников к базовому абстрактному.

Вопрос: Как реализовать возможность редактирования полей классов-наследников, ведь если мы приведём их к базовому, то потеряем доступ к индивидуальным полям. и сможем отредактировать только ФИО?

Answer 1
public interface IEditor {
  bool Edit(Worker worker);
}
public static class Editors {
  private static List<IEditor> items = new List<IEditor>();
  public static RegisterEditor(IEditor item) {
    items.Add(item);
  }
  public static bool Edit(Worker worker) {
    foreach(IEditor editor in items) {
      if (editor.Edit(worker))
        return true;
    }
    return false;
  }
} 
public class Editor_TempHire : IEditor {
  public bool Edit(Worker worker) {
    if (worker is Worker_TempHire) {
      Worker_TempHire th = (Worker_TempHire)worker;
      // edit th
      // ...
      return true;
    }
    return false;
  }
}
public class Editor_FullTime : IEditor {
  public bool Edit(Worker worker) {
    if (worker is Worker_FullTime) {
      Worker_FullTime ft = (Worker_FullTime)worker;
      // edit ft
      // ...
      return true;
    }
    return false;
  }
}
Editors.RegisterEditor(new Editor_TempHire);
Editors.RegisterEditor(new Editor_FullTime);
Worker worker = ...
if (!Editors.Edit(worker)) {
  throw new EditorNotFoundException(worker);
}
READ ALSO
selector + csv //

selector + csv //

Существует форма регистрации, в которой необходимо выбирать страны из спискаЭтот список хранится в csv файле, как мне его достать оттуда и положить...

66
Почему не срабатывает код PHP из книги.На тему генераторов и то что их можно комбинировать

Почему не срабатывает код PHP из книги.На тему генераторов и то что их можно комбинировать

Обычно в книгах, когда говорят о каком-то коде, то он может быть раскидан по всей главеПорой даже переходить из одной главы в другую

139