Выполнение кода из строки или обращение к переменной по введённому названию 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 шт):
Я думаю лучшим вариантом будет хранить в JSON'е лист со связками "название" - "количество" (предположительно, ибо не знаю какие данные у тебя хранятся)
JSON будет выглядеть так:
{
"AllItems": [
{
"Name": "Предмет 1",
"Count": 11
},
{
"Name": "Предмет 2",
"Count": 3
},
{
"Name": "Предмет 3",
"Count": 137
}
]
}
Потом просто парсишь его и подтягиваешь необходимый предмет