Вызов класса по значению элемента массива - 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");
        }        
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.125 из 5
Похожие ответы