Выполнение кода из строки или обращение к переменной по введённому названию c#

Предисловие: пишу бота для вк с текстовой игрой. В детали углубляться не будем, но он по тематике Escape from Tarkov (можете погуглить игру), и там много переменных. Хочу создать набор удобных команд для просмотра и редактирования этих переменных, которые можно вызывать через консоль или вводить в вк (главное - мы получаем string).

Задача: взять из string название переменной и обратиться к такой переменной. Например:

int num = 10;
strint cmd = Console.ReadLine(); //Вводим "add num 5" или "num += 5;", смотря какой 

метод сработает
execute(cmd);
Console.WriteLine(num); //должно вывестись 15

Я думал о библиотеке переменных, но из-за особенностей игры, которые я тоже старался реализовать, инвентарь может иметь очень много уровней (то есть в рюкзак можно положить другой рюкзак, в него третий и так далее). Потому переменные будут сильно меняться и даже не будут иметь одного формата. А ещё таких переменных очень много и храниться они будут для каждого человека, кто будет в это играть.

Потому мне нужен либо способ извлечь из текста имя переменной и написать код, в котором будет на место этой переменной ставиться строка с её названием, или полностью компилировать код из строки и писать в команду исполняемую строку.


Ответы (1 шт):

Автор решения: Dmitry Yalchik

Я думаю лучшим вариантом будет хранить в JSON'е лист со связками "название" - "количество" (предположительно, ибо не знаю какие данные у тебя хранятся)

JSON будет выглядеть так:

{
  "AllItems": [
    {
      "Name": "Предмет 1",
      "Count": 11
    },
    {
      "Name": "Предмет 2",
      "Count": 3
    },
    {
      "Name": "Предмет 3",
      "Count": 137
    }
  ]
}

Потом просто парсишь его и подтягиваешь необходимый предмет

→ Ссылка