C # Действие / Список функций
У меня есть программа, которая должна выполнять функцию в соответствии с Enum, и мне интересно, есть ли другой способ, чем это:
enum FunctionType
{
Addition = 0,
Substraction = 1,
Mutiplication = 2,
Division = 3
}
void ExecuteFunction(FunctionType Function)
{
switch(Function)
{
case FunctionType.Addition: Addition();
break;
case FunctionType.Substraction: Subsctration();
break;
...
default: ...
}
}
(Это не код, который я использую, это просто представление того, что я хочу сделать). Этот подход должен работать нормально, но что происходит, когда у вас гораздо больше функций? Я не хочу иметь переключатель на 50 линий. Итак, я хочу знать, есть ли способ упростить это, что-то вроде этого:
enum FunctionType : Action
{
Addition = new Action(Addition);
Substraction = new Action(Substraction);
....
}
void ExecuteFunction(FunctionType Function)
{
(Action)Function.Invoke();
}
Переключатель не требуется, и то, что может быть 50 строк, превращается в 1 строку. Но это невозможно сделать, только числовые типы принимаются как перечисления. Я думаю, что возможно иметьList<T>
действий, но для этого потребуется добавить каждое действие в список во время выполнения.
РЕДАКТИРОВАТЬ: Я нашел в исходном коде, как это делается, но я не могу понять это. Вот что я получаю: они создают кастомAttribute
который содержитstring
(Имя метода) и методы, которые они делают:
[CustomAtrribute("name")]
void Method()
{
}
Тогда я не знаю, как это называется по названию, я думаю, что-то вроде рефлексии, но я не знаю, как найти информацию об этом.
РЕДАКТИРОВАТЬ 2: Я нашел способ, которым я хочу сделать это, я добавлю интерфейс с функцией, затем реализую этот интерфейс с кодом внутри функции и ИспользоватьDictionary<Enum, Interface>
называть это Я не знаю, должен ли я ответить на свой вопрос в любом случае, спасибо всем, кто мне помог.