Вызов метода, когда предварительно неизвестен тип класса - C#
Формулировка задачи:
Форумчане, день добрый!
Имеется приблизительно вот такая структура в коде:
Кроме Task_1_1 от Tasks наследуются и другие подобные классы, типа Task_1_2, Task_2_1 с разными реализациями и override методом Execute().
Вопрос, как правильно организовать создание экземпляра класса и вызов этого метода в методе ChooseTask класса Tasks, если заранее неизвестно, какой именно тип класса будет и он зависит от входных данных?
Дошел приблизительно до этой стадии, дальше застопорился:
Можно ли как-то грамотно переписать (возможно, с помощью порождающих паттернов), если в будущем предполагается добавление других классов типа Task_[i]_[j], наследуемых от Tasks?
class Tasks { //Поле для хранения имени класса конкретной задачи private string _taskType; public void ChooseTask(int a, int b) { this._taskType = "Task_" + a.ToString() + "_" + b.ToString(); Type type = Type.GetType(this._taskType); object task = Activator.CreateInstance(type); //? вызвать Execute() для task } public virtual void Execute() { //код } public virtual void Print() { //код } } class Task_1_1: Tasks { public override void Execute() { //код } } ...
public void ChooseTask(int a, int b) { this._taskType = "Task_" + a.ToString() + "_" + b.ToString(); Type type = Type.GetType(this._taskType); object task = Activator.CreateInstance(type); //? вызвать Execute() для task }
Решение задачи: «Вызов метода, когда предварительно неизвестен тип класса»
textual
Листинг программы
((Tasks)task).Execute();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д