Мой С# бот говорит, что в project.GlobalVariables можно сохранять объекты, но есть нюанс. На практике не пробовал.Если возможно в project.GlobalVariables или другом аналоге сохранять объекты, а не строки или только писать свою dll с данным функционалом?
public class MyClass
{
public string Name { get; set; }
public int Age { get; set; }
}
var myObject = new MyClass();
myObject.Name = "John";
myObject.Age = 25;
project.GlobalVariables["myObject"] = myObject;
IGlobalVariables
и ILocalVariables
Ну по моему тут и так видно что нейронка бред выдалаМой С# бот говорит, что в project.GlobalVariables можно сохранять объекты, но есть нюанс. На практике не пробовал.
Проверил доку Zennoposter, действительно бред.Ну по моему тут и так видно что нейронка бред выдала
public class Test
{
IZennoPosterProjectModel project;
public Test(IZennoPosterProjectModel project)
{
this.project = project;
}
public int znachenie{get;set;}
public void SendMessage(string message)
{
project.SendInfoToLog(message);
}
}
Test a = new Test(project);
a.SendMessage("Сообщение из кубика где мы создали экземпляр класса");
a.znachenie = 45345134; //Присвоили значение переменной
project.GlobalVariables["[email protected]","TestGlobalVariables"].Value = a;
Test result = project.GlobalVariables["[email protected]","TestGlobalVariables"].Value;
result.SendMessage("Сообщение из кубика где мы используем экземпляр класса созданный в другом кубике");
result.SendMessage(result.znachenie.ToString()); //выводим значение переменной которое присвоили в первом кубике
List<string> sharedList = new List<string>();
sharedList.Add("Value1");
project.Context["sharedList"] = sharedList;
project.GlobalVariables.SetVariable("sharedObjectNamespace", "sharedList", sharedList);
sharedList.Add("Value2");
project.SendInfoToLog("sharedList.count: " + sharedList.Count);
project.SendInfoToLog("Context[sharedList].count: " + project.Context["sharedList"].Count);
project.SendInfoToLog("GlobalVariables[sharedList].count: " + project.GlobalVariables["sharedObjectNamespace","sharedList"].Value.Count);
dynamic sharedObject = new System.Dynamic.ExpandoObject();
sharedObject.count = 1;
project.Context["sharedObject"] = sharedObject;
project.GlobalVariables.SetVariable("sharedObjectNamespace", "sharedObject", sharedObject);
sharedObject.count++;
project.SendInfoToLog("sharedObject.count: " + sharedObject.count);
project.SendInfoToLog("Context[sharedObject].count: " + project.Context["sharedObject"].count);
project.SendInfoToLog("GlobalVariables[sharedObject].count: " + project.GlobalVariables["sharedObjectNamespace","sharedObject"].Value.count);
Dictionary<string, object> sharedDict = new Dictionary<string, object>();
dynamic counter = new System.Dynamic.ExpandoObject();
counter.count = 1;
sharedDict.Add("counterObj", counter);
project.Context["sharedDict"] = sharedDict;
project.GlobalVariables.SetVariable("sharedObjectNamespace", "sharedDict", sharedDict);
counter.count++;
project.SendInfoToLog("sharedDict.count: " + ((dynamic)sharedDict["counterObj"]).count);
project.SendInfoToLog("Context[sharedDict].count: " + project.Context["sharedDict"]["counterObj"].count);
project.SendInfoToLog("GlobalVariables[sharedDict].count: " + project.GlobalVariables["sharedObjectNamespace","sharedDict"].Value["counterObj"].count);
Примитивные объекты ?) что ?)Да, сейчас тоже проверил на примитивных объектах - работает. Требует возможности сериализации зачем-то, но работает.
С динамическим объектом тоже...C#:List<string> sharedList = new List<string>(); sharedList.Add("Value1"); project.Context["sharedList"] = sharedList; project.GlobalVariables.SetVariable("sharedObjectNamespace", "sharedList", sharedList); sharedList.Add("Value2"); project.SendInfoToLog("sharedList.count: " + sharedList.Count); project.SendInfoToLog("Context[sharedList].count: " + project.Context["sharedList"].Count); project.SendInfoToLog("GlobalVariables[sharedList].count: " + project.GlobalVariables["sharedObjectNamespace","sharedList"].Value.Count);
Со вложениями тоже проблемы не нашел...C#:dynamic sharedObject = new System.Dynamic.ExpandoObject(); sharedObject.count = 1; project.Context["sharedObject"] = sharedObject; project.GlobalVariables.SetVariable("sharedObjectNamespace", "sharedObject", sharedObject); sharedObject.count++; project.SendInfoToLog("sharedObject.count: " + sharedObject.count); project.SendInfoToLog("Context[sharedObject].count: " + project.Context["sharedObject"].count); project.SendInfoToLog("GlobalVariables[sharedObject].count: " + project.GlobalVariables["sharedObjectNamespace","sharedObject"].Value.count);
Мистика, не понимаю, почему у меня ранее подобное не работало - да, на более сложных классах, но тут не должно быть принципиально это. Нужно еще раз при случае попробовать на реальном кейсе.C#:Dictionary<string, object> sharedDict = new Dictionary<string, object>(); dynamic counter = new System.Dynamic.ExpandoObject(); counter.count = 1; sharedDict.Add("counterObj", counter); project.Context["sharedDict"] = sharedDict; project.GlobalVariables.SetVariable("sharedObjectNamespace", "sharedDict", sharedDict); counter.count++; project.SendInfoToLog("sharedDict.count: " + ((dynamic)sharedDict["counterObj"]).count); project.SendInfoToLog("Context[sharedDict].count: " + project.Context["sharedDict"]["counterObj"].count); project.SendInfoToLog("GlobalVariables[sharedDict].count: " + project.GlobalVariables["sharedObjectNamespace","sharedDict"].Value["counterObj"].count);