Вызов класса по значению элемента массива - 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"); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д