Есть абстрактный класс "Работник" с абстрактным методом "Подсчитать зараплату", от него наследуются два класса реализующие этот метод, "Наёмный работник" зарплата считается за кол-во подрядов. И "Штатный работник" со своей схемой подсчета. В абстрактном классе есть поля ФИО, у классов-наследников есть свои индивидуальные поля, и методы для их изменения/считывания (типо get set). В программе есть список состоящий из классов "Работник", и два метода добавления нового работника, первый для наёмника второй для штатного (с разными полями разумеется). Эти методы приводят наследников к базовому абстрактному.
Вопрос: Как реализовать возможность редактирования полей классов-наследников, ведь если мы приведём их к базовому, то потеряем доступ к индивидуальным полям. и сможем отредактировать только ФИО?
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);
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Использую автозагрузку классов:
Существует форма регистрации, в которой необходимо выбирать страны из спискаЭтот список хранится в csv файле, как мне его достать оттуда и положить...
Обычно в книгах, когда говорят о каком-то коде, то он может быть раскидан по всей главеПорой даже переходить из одной главы в другую