Я предлагаю вместо того, чтобы выполнять эту серию предложений «если», вы используете наследование для достижения того, что вам нужно. Сначала вы создаете виртуальный метод в вашем базовом классе. Виртуальный метод означает, что у него не будет никакой реализации в базовом классе, только объявление:
public class Task
{
(...)
public virtual void ShowEditForm(IList todoList);
(...)
}
Затем вы создаете методы дочернего класса (я предполагаю, что объект todoList является IList, но просто измените его, если это не так).
public class Note: Task
{
(...)
public override void ShowEditForm(IList todoList)
{
(new noteBuilder(taskToEdit)).Show();
}
(...)
}
public class Reminder: Task
{
(...)
public override void ShowEditForm(IList todoList)
{
(new reminderBuilder(taskToEdit)).Show();
}
(...)
}
Я не писал все классы, но думаю, у вас есть идея. Чтобы вызвать метод, просто вызовите метод из класса Task, и будет выполнен правильный метод:
int edi = taskNameBox.SelectedIndex;
Task checkTask = todoList.ElementAt(edi);
checkTask.ShowEditForm(todoList);
Таким образом, когда вы хотите создать новые типы Task, вам просто нужно создать дочерний класс с соответствующим методом, а система наследования сделает все остальное.
Еще одна вещь, ключевое слово override в объявлении дочернего метода важно, потому что оно говорит компилятору, что этот метод следует вызывать, даже если вы вызываете его из BaseClass.