S#

Сериализация (xml) класса Security


Сериализация (xml) класса Security
Atom Reply
4/2/2019


Добрый день
Имею Quik Lua коннектор.
Примерно 1 - 1,5 года назад сериализация класса Security проходила успешно.

Провел сериализацию сегодня и получил 8 ошибок:
1 InvalidOperationException: There was an error reflecting property 'Board'.
2 InvalidOperationException: There was an error reflecting type 'StockSharp.BusinessEntities.ExchangeBoard'.
3 InvalidOperationException: There was an error reflecting property 'WorkingTime'.
4 InvalidOperationException: There was an error reflecting type 'StockSharp.Messages.WorkingTime'.
5 InvalidOperationException: There was an error reflecting property 'Periods'.
6 InvalidOperationException: There was an error reflecting type 'StockSharp.Messages.WorkingTimePeriod'.
7 InvalidOperationException: Cannot serialize member 'StockSharp.Messages.WorkingTimePeriod.SpecialDays' of type 'System.Collections.Generic.IDictionary`2[[System.DayOfWeek, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[Ecng.ComponentModel.Range`1[[System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]][], Ecng.ComponentModel, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b10e79ed0227b515]]', see inner exception for more details.
8 NotSupportedException: Cannot serialize member StockSharp.Messages.WorkingTimePeriod.SpecialDays of type System.Collections.Generic.IDictionary`2[[System.DayOfWeek, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[Ecng.ComponentModel.Range`1[[System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]][], Ecng.ComponentModel, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b10e79ed0227b515]] because it is an interface.

Это баг или невозможность сериализации реализовано с определенной целью?

Tags:


Thanks:




8 Answers
Support

Avatar
Date: 4/2/2019
Reply


Добрый день

Сохранение и восстановление инструментов сделано штатными средствами нашего хранилища.
Thanks: Dmitry Antipov

Dmitry Antipov

Avatar
Training Donator
Date: 4/2/2019
Reply


Support Перейти
Добрый день

Сохранение и восстановление инструментов сделано штатными средствами нашего хранилища.


var forced = true;
storageRegistry.GetSecurityStorage().Save(security, forced);

Уточнение.
Если параметр forced метода Save = true - то,новый security замещает старый, уже имеющийся в хранилище?
Topic starter
Thanks:

Support

Avatar
Date: 4/2/2019
Reply


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

Dmitry Antipov

Avatar
Training Donator
Date: 4/2/2019
Reply


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


Чтобы разобраться.
1) Если второй параметр false, то инструмент обновляется - обновляются свойства инструмента.
2) Если второй параметр true, то инструмент обнуляется - удаляется инструмент их хранилища и добавляется инструмент.
Topic starter
Thanks:

Support

Avatar
Date: 4/3/2019
Reply


Параметра force не влияет на обновление или удаление инструментов. Это принудительное обновление ранее записанных данных.
Thanks:

Dmitry Antipov

Avatar
Training Donator
Date: 4/3/2019
Reply


Support Перейти
Параметра force не влияет на обновление или удаление инструментов. Это принудительное обновление ранее записанных данных.


force = true - данные обновляться будут,
force = false- данные обновляться не будут.

Или "обновление" и "принудительное обновление" - это разные обновления?

Сохраняю инструменты (при запуске приложения) и при force = true и при force = false - в файл instruments.csv сохраняются уже имеющиеся инструменты (инструменты в файле дублируются)
Topic starter
Thanks:

Support

Avatar
Date: 4/6/2019
Reply


Добрый день

Параметр force обнуляет данных, если значения инструменты пустые. В противном случае, обновляются только не пустые значения.
Thanks: Dmitry Antipov

Dmitry Antipov

Avatar
Training Donator
Date: 4/6/2019
Reply


Добрый день

Цитата:
Параметр force обнуляет данных, если значения инструменты пустые. В противном случае, обновляются только не пустые значения.

Уточнение:
force = true - чтобы не игнорировались пустые значения (null) инструмента
Topic starter
Thanks:


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy