Имеем структуру с кодом public struct PosRT { public int pos; public double price; public DateTime time; public PosRT(int p1, double p2, DateTime p3) { pos = p1; price = p2; time = p3; } } Сохраняем в кеш PosRT SP = new PosRT(1, 100, DateTime.Now); ctx.StoreGlobalObject("Cache", SP); Читам из кеша if (cache == null){ ctx.Log("Параметры не определены !!!", 0xff8877); return; } PosRT SP2 = new PosRT(); SP2 = (PosRT) cache; Весь код замечательно работает внутри одного скрипта, но когда считываюший код поместить в другой скрипт, то на последней срочке SP2 = (PosRT) cache выдается сообщение: 13:27:49.61 System.InvalidCastException: Заданное приведение является недопустимым. в AVScript.RealtimeOrders.Execute(IContext ctx, ISecurity sec) в TSLab.User.Script.Execute(IContext context, ISecurity Источник1) Объявление структуры вынесено в отдельный файл, который дополнительно цепляется к блокам "Внешний скрипт" в обоих скриптах, записывающем и считывающем. Если же я использую простые типы (int, double и т.д), то все работает нормально.
Типы объявленные в разных библиотеках по факту это разные типы. Отсюда следует, что Вам нужно общие типы данных объявлять в отдельной библиотеке. Тогда все будет работать.
|