Вызов метода, когда предварительно неизвестен тип класса - 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();