Lista de ações / funções em C #
Eu tenho um programa que tem que executar uma função de acordo com um Enum e eu estou querendo saber se há outra maneira de fazer isso do que isso:
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: ...
}
}
(Este não é o código que estou usando, é apenas para representar o que eu quero fazer). Essa abordagem deve funcionar bem, mas o que acontece quando você tem muito mais funções? Eu não quero ter um interruptor de 50 linhas. Então, eu quero saber se existe uma maneira de simplificá-lo, algo como isto talvez:
enum FunctionType : Action
{
Addition = new Action(Addition);
Substraction = new Action(Substraction);
....
}
void ExecuteFunction(FunctionType Function)
{
(Action)Function.Invoke();
}
Nenhuma opção é necessária e o que poderia ser de 50 linhas se transforma em 1 linha. Mas isso não é possível, apenas tipos numéricos são aceitos como enumerações. Eu acho que é possível ter umList<T>
de ações, mas isso exigiria adicionar cada ação à lista no tempo de execução.
Edição: Encontrei em um código-fonte uma maneira de fazer isso, mas eu realmente não consigo entendê-lo. É isso que eu recebo: eles criam um costumeAttribute
que contém umstring
(O nome do método) e sobre os métodos que eles fazem:
[CustomAtrribute("name")]
void Method()
{
}
Então eu não sei como isso é chamado pelo nome, acho que algum tipo de reação, mas não sei como encontrar as informações sobre isso.
EDIT2: Encontrei da maneira que quero fazer isso, adicionarei uma interface com uma função, depois implementarei essa interface com o código dentro da função e Use aDictionary<Enum, Interface>
para chamá-lo. Não sei se devo responder minha própria pergunta, de qualquer forma, graças a todos que alguém me ajudou.