C # Aktion / Funktionsliste

Ich habe ein Programm, das eine Funktion gemäß einer Aufzählung ausführen muss, und ich frage mich, ob es einen anderen Weg gibt als diesen:

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: ...  
  }
}

(Dies ist nicht der Code, den ich verwende, er soll nur darstellen, was ich tun möchte.) Dieser Ansatz sollte funktionieren, aber was passiert, wenn Sie viel mehr Funktionen haben? Ich möchte keinen 50-Zeilen-Switch haben. Also möchte ich wissen, ob es einen Weg gibt, es zu vereinfachen:

enum FunctionType : Action
{
 Addition = new Action(Addition);
 Substraction = new Action(Substraction);
 ....
}
void ExecuteFunction(FunctionType Function)
{
 (Action)Function.Invoke();
}

s wird kein Schalter benötigt und was 50 Zeilen sein könnten, wird zu einer Zeile. Dies ist jedoch nicht möglich, da nur numerische Typen als Aufzählungen akzeptiert werden. Ich denke es ist möglich ein @ zu habList<T> von Aktionen, für die jedoch zur Laufzeit jede Aktion zur Liste hinzugefügt werden müsste.

EDIT: Ich habe in einem Quellcode eine Möglichkeit gefunden, wie das gemacht wird, aber ich kann es nicht wirklich verstehen. Folgendes bekomme ich: Sie erstellen ein benutzerdefiniertesAttribute das ein @ enthästring (Der Methodenname) und die Methoden, die sie ausführen:

[CustomAtrribute("name")]
void Method()
{    
}

Dann weiß ich nicht, wie das so heißt, ich schätze, eine Art Überlegung, aber ich weiß nicht, wie ich die Informationen dazu finden kann.

EDIT2: Ich habe gefunden, wie ich das tun möchte. Ich werde eine Schnittstelle mit einer Funktion hinzufügen und diese Schnittstelle dann mit dem Code in der Funktion implementieren und ein @ verwendeDictionary<Enum, Interface> um es zu nennen. Ich weiß nicht, ob ich meine eigene Frage beantworten soll, danke an alle, die mir geholfen haben.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage