Но теперь я все еще пытаюсь понять, как удалить оператор переключения, чтобы все стало немного более динамичным и не приходилось беспокоиться о добавлении нового случая каждый раз, когда разрабатывается новое действие.
По сути, пытаясь найти решение (по крайней мере «хороший» подход), где разработчик должен беспокоиться только о кодировании самого класса действия, а не о переключении (программа должна знать, что к чему относится -> аргумент к действию)
На данный момент основной код выглядит следующим образом:
Код: Выделить всё
namespace ConsoleApp1
{
internal class Program
{
static void Main(string[] args)
{
//validating args
if(!args.Any())
return;
switch (args.First())
{
case "action1":
case "action2":
case "action3":
break;
default:
return;
}
switch (args.First())
{
case "action1":
RunTheAction();
break;
case "action2":
RunTheAction();
break;
case "action3":
//todo RunTheAction()
break;
//it keeps growing -> RunTheAction()
}
}
static void RunTheAction() where T : IAction
{
var action = Activator.CreateInstance();
action.Execute();
}
}
}
Код: Выделить всё
internal interface IAction
{
void Execute();
}
internal class Action1 : IAction
{
public void Execute()
{
//do some action1 stuff
}
}
internal class Action2 : IAction
{
public void Execute()
{
//do some action2 stuff (different than action1 :) )
}
}
Подробнее здесь: https://stackoverflow.com/questions/787 ... in-c-sharp
Мобильная версия