Как выполнить C# или JS код из переменной?

material

Client
Регистрация
23.03.2021
Сообщения
268
Благодарностей
88
Баллы
28
Берите нужные пары например в словарь.
Его сериализируем и сохраняем в какую-то переменную temp
Передаем эту переменную во вложенный проект.

На стороне вложенного проекта десериализуем нашу переменную temp
И заполняем значениями переменные во вложенном проекте.

Выглядеть это может примерно так:

C#:
string[] data1 = new[]{ "значение_1", "значение_4", "значение_7"};
string[] data2 = new[]{ "значение_2", "значение_5", "значение_8"};
string[] data3 = new[]{ "значение_3", "значение_6", "значение_9"};

var dic = new Dictionary<string, string[]>();
dic["переменная_1"] = data1;
dic["переменная_2"] = data2;
dic["переменная_3"] = data3;

project.Variables["temp"].Value =Global.ZennoLab.Json.JsonConvert.SerializeObject(dic,  Global.ZennoLab.Json.Formatting.Indented);

// Во вложенном проекте
var dic_item = Global.ZennoLab.Json.JsonConvert.DeserializeObject<Dictionary<string, string[]>>(project.Variables["temp"].Value);

project.Variables["переменная_1"].Value = dic_item["переменная_1"][0]; // - это будет использовано в первом случае
project.Variables["переменная_1"].Value = dic_item["переменная_1"][1]; // - эта строка будет использована в другом месте
project.Variables["переменная_1"].Value = dic_item["переменная_1"][2]; // - эта строка будет использована ещё в каком-то  месте

project.Variables["переменная_2"].Value = dic_item["переменная_2"][0];
project.Variables["переменная_2"].Value = dic_item["переменная_2"][1];
project.Variables["переменная_2"].Value = dic_item["переменная_2"][2];

project.Variables["переменная_3"].Value = dic_item["переменная_3"][0];
project.Variables["переменная_3"].Value = dic_item["переменная_3"][1];
project.Variables["переменная_3"].Value = dic_item["переменная_3"][2];

C#:
// Во вложенном проекте в первом месте
var dic_item = Global.ZennoLab.Json.JsonConvert.DeserializeObject<Dictionary<string, string[]>>(project.Variables["temp"].Value);
int i = 0;
project.Variables["переменная_1"].Value = dic_item["переменная_1"][i]; // - это будет использовано в первом случае
project.Variables["переменная_2"].Value = dic_item["переменная_2"][i];
project.Variables["переменная_3"].Value = dic_item["переменная_3"][i];

C#:
// Во вложенном проекте в втором месте
var dic_item = Global.ZennoLab.Json.JsonConvert.DeserializeObject<Dictionary<string, string[]>>(project.Variables["temp"].Value);
int i = 1;
project.Variables["переменная_1"].Value = dic_item["переменная_1"][i]; // - это будет использовано в первом случае
project.Variables["переменная_2"].Value = dic_item["переменная_2"][i];
project.Variables["переменная_3"].Value = dic_item["переменная_3"][i];

C#:
// Во вложенном проекте в третьем месте
var dic_item = Global.ZennoLab.Json.JsonConvert.DeserializeObject<Dictionary<string, string[]>>(project.Variables["temp"].Value);
int i = 2;
project.Variables["переменная_1"].Value = dic_item["переменная_1"][i]; // - это будет использовано в первом случае
project.Variables["переменная_2"].Value = dic_item["переменная_2"][i];
project.Variables["переменная_3"].Value = dic_item["переменная_3"][i];
Спасибо за код буду разбираться!
 

Brabus_bots

Client
Регистрация
13.04.2019
Сообщения
680
Благодарностей
467
Баллы
63
К сожалению нет времени перечитывать все посты.

Не проще было бы перед вложенным проектом добавить свой c# кубик, который будет стандартизировать группы переменных в нужный формат для встроенного проекта?
 

material

Client
Регистрация
23.03.2021
Сообщения
268
Благодарностей
88
Баллы
28
К сожалению нет времени перечитывать все посты.

Не проще было бы перед вложенным проектом добавить свой c# кубик, который будет стандартизировать группы переменных в нужный формат для встроенного проекта?
Проблема в том, что группы переменных располагаеются во вложенном проекте в заранее прописанных местах. Другими словами каждой группе переменых нужен свой идентификатор, чтобы по нему можно было вызвать нужную группу переменных и прописать данным переменным запланированные в родительноском проекте, значения.

В целом вопрос решил, через идентификатор группы переменных, чтобы вложенный проект понимал, с чем имеет дело, но уверен есть более простой путь.
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 413
Благодарностей
3 327
Баллы
113
Научиться бы отличать проблему от задачи. Для меня так выглядит задача, она же и создает проблему, чтобы иначе сформулировать задачу, нужен опыт. Вот и получается, что на сегодняшний момент возможна постановка такой задачи, которая создает некоторые проблемы в реализации. Проект в проекте сложный функционал, особенно при работе с переменными. Я создавал уже тему нерешаемой проблемы с 3 вложенными проектами, когда в 3-ем проекте выполняется действие, записывается в переменную, которую нужно передать в 1 проект, но из-за того, что переменной нет во 2-ом проекте, значение переменной не может передаться в 1 проект, нужно синхронизировать все переменные, между всеми проектами, чтобы значения переменных могли свободно путешествовать между любыми вложенными проектами.
Вы пишите на C#.
У вас есть доступ к project.Context, через который вы можете передавать любые объекты в подпроект.

Можно, конечно, извращаться с переменными, передавать через одну из них JSON сразу со всей инфой, но это перебор.
 
  • Спасибо
Реакции: material

material

Client
Регистрация
23.03.2021
Сообщения
268
Благодарностей
88
Баллы
28
Вы пишите на C#.
У вас есть доступ к project.Context, через который вы можете передавать любые объекты в подпроект.

Можно, конечно, извращаться с переменными, передавать через одну из них JSON сразу со всей инфой, но это перебор.
Через контекст можно передавать любые объекты во вложенный проект, но что делать, если вложенный проект начинает ссылаться на другой вложенный проект, получает уже в нем информацию, которую нужно будет передать в родительский проект, или корневой, в общем который был первым в данной цепочке проектов. Цепочка из вложенных проектов легко может уйти и на 4 уровеня вглубину и все данные полученные в любом из вложенных проектов, могут потребоваться, как в родительском проекте, так и во вложенных, но это уже сложнее, здесь хотя бы упростить передачу значений переменных именно в родительский проект, когда переменные всех проектов не синхронизированы вручную. Сейчас мне приходиться вручную синхронизировать все переменные во всех проектах, чтобы они корректно могли передавать информацию от одного проекта другому на 2-3 уровня вложенности.
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 413
Благодарностей
3 327
Баллы
113
но что делать, если вложенный проект начинает ссылаться на другой вложенный проект
Цепочка из вложенных проектов легко может уйти и на 4 уровеня вглубину
А вы не ищите лёгких путей, устраивая подобные "подпроектные многоножки"...:dg:

Если можете писать на C#, пишите сразу библиотеки и подключайте их через GAC и забудьте про переменные постера.
 
Последнее редактирование:
  • Спасибо
Реакции: material

material

Client
Регистрация
23.03.2021
Сообщения
268
Благодарностей
88
Баллы
28
А вы не ищите лёгких путей, устраивая подобные "подпроектные многоножки"...:dg:

Если можете писать на C#, пишите сразу библиотеки и подключайте их через GAC и забудьте про переменные постера.
Программирование в планах есть, но нет времени и поэтому пока приходится страдать. Сообщение к себе сохраню ваше, может быть в будущем посмотрю на него под другим углом и избавлюсь от многоуровневых вложений.
 
  • Спасибо
Реакции: Yuriy Zymlex

Кто просматривает тему: (Всего: 3, Пользователи: 0, Гости: 3)