Вызов класса по значению элемента массива - C#
Формулировка задачи:
Приветствую!
Пишу эмулятор УОУ на базе электроники-580
Есть таблица мнемокодов в виду двумерной матрицы, номер строки + номер столбца дают мне код команды, сами команды я хочу описать в методах класса.
Вопрос такой, есть ли какой-то способ вызывать метод по значению из ячейки массива? (Планировал сделать это с помощью кейса, но это мне кажется совсем некрасивым)
Решение задачи: «Вызов класса по значению элемента массива»
textual
Листинг программы
class Program
{
static void Main(string[] args)
{
var manager = new CommandManager();
manager.Execute(CommandCode.Command2);
manager.Execute(CommandCode.Command1);
Console.ReadLine();
}
}
public enum CommandCode
{
Command1 = 1,
Command2
}
public class CommandCodeAttribute : Attribute
{
public CommandCodeAttribute(CommandCode code)
{
Code = code;
}
public CommandCode Code { get; private set; }
}
public class CommandManager
{
public void Execute(CommandCode code)
{
var method = GetType().GetMethods().FirstOrDefault(m => m.GetCustomAttribute<CommandCodeAttribute>()?.Code == code);
method?.Invoke(this, null);
}
[CommandCode(CommandCode.Command1)]
public void Command1()
{
Trace.WriteLine("Command1");
}
[CommandCode(CommandCode.Command2)]
public void Command2()
{
Trace.WriteLine("Command2");
}
}