У вас хорошая интуиция.
Обычно в ООП, когда у вас есть строки переключателей if или огромных, это сильный запах кода. Лучший способ избавиться от этого запаха - это пойти с полиморфизмом.
Вы должны продолжить свою идею, имея базовый абстрактный класс BaseTool, с различными методами OnXXX, реализованными как nops (просто возвращает, поэтому вам нужно только указать поведение, если ваш инструмент знает, как действовать на метод), и каждый инструмент наследует от BaseTool и реализует свое собственное поведение, переопределяя соответствующие методы.
Итак, ваш метод в конечном итоге
public void OnEditorViewMouseDown(Point mousePos)
{
currentTool.OnEditorViewMouseDown(mousePos);
}
В зависимости от вашего проекта, вы также должны рассмотреть возможность передачи DragManager методу, чтобы не привязывать к переменным экземпляра, лежащим вокруг. EditorContext (содержащий DragManager), оснащенный всем необходимым для метода без необходимости извлечения «глобальных» переменных, сделает ваш метод более автономным и менее хрупким при рефакторинге. Сам дизайн будет зависеть от ответственности: кто за что отвечает.