[quote=igsbr;10677]Тест записи сделок в файловое хранилище (на базе примера SmpleStorage со своим генератором экземпляров класса Trade и хранением на диске вместо записи в память) привел к следующим наблюдениям:
1.Конструктор "public FileStorage(string directory)" - не ясно, какая именно директория подразумевается.
[/quote]
FileStorage пока в разработке.
[quote=igsbr;10677]
2. Повторной запись всего набора данных после добавления свежих записей ведет к удвоению бывшей последней записи. На примере. Если я за сегодня записал 10 экземпляров класса Trade со значением Id от 1 до 10, то при добавлении следующих 10 трейдов к исходному списку и повторному его сохранению, имею следующий результат: при чтении получу 21 запись (вместо ожидаемых 20), где все записи будут уникальные, кроме одного исключения - трейд за номером 10 (бывший последний) будет записан два раза с одним и тем же Id. Похоже на баг, т.к. мой здравый смысл подсказывает,
[/quote]
Правильно подсказывает. Спасибо за репорт, пофиксил.
[quote=igsbr;10677]
3. Если для экземпляров каждой из записей класса Trade в списке не задавать значение Security, то сохранить список трейдов в TradeStorage невозможно, т.к. генерируется ошибка. Признаться, я посчитал, что если стоит атрибут [Ignore] в определении класса перед соответствующим полем, то можно не задавать лишнее - ведь все равно при вызове IMarketDataStorage GetTradeStorage(Security security) мы задаем единое значение security для всего набора записываемых данных. Зачем лишние операции на каждую единицу хранения?! Но почему-то [Ignore] не работает. Или я в этом месте неправильно понимаю логику.[/quote]
Ignore - это для сериализации из Ecng.Serialization. Маркетные данные не сериализуются, а архивируются спец форматом. Наличие установленного значения в поле Trade.Security нужно лишь для проверки потока данных. Об лишних операциях я не понял. Если подразумевается их сохранение в файл, то, естественно, этого не происходит.