Пример #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ExchangeInfoProvider"/>.
        /// </summary>
        /// <param name="entityRegistry">The storage of trade objects.</param>
        public ExchangeInfoProvider(IEntityRegistry entityRegistry)
        {
            if (entityRegistry == null)
            {
                throw new ArgumentNullException(nameof(entityRegistry));
            }

            ExchangeBoard.EnumerateExchanges().ForEach(exchange => _exchanges.Add(exchange.Name, exchange));
            ExchangeBoard.EnumerateExchangeBoards().ForEach(board => _boards.Add(board.Code, board));

            _entityRegistry = entityRegistry;

            var boardCodes = new HashSet <string>();

            var boardList = _entityRegistry.ExchangeBoards as ExchangeBoardList;

            boardCodes.AddRange(boardList != null ? boardList.GetIds() : _entityRegistry.ExchangeBoards.Select(b => b.Code));

            var boards = Boards.Where(b => !boardCodes.Contains(b.Code)).ToArray();

            if (boards.Length > 0)
            {
                boards
                .Select(b => b.Exchange)
                .Distinct()
                .ForEach(Save);

                boards
                .ForEach(Save);
            }

            _entityRegistry.Exchanges.ForEach(e => _exchanges[e.Name]   = e);
            _entityRegistry.ExchangeBoards.ForEach(b => _boards[b.Code] = b);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="InMemoryExchangeInfoProvider"/>.
 /// </summary>
 public InMemoryExchangeInfoProvider()
 {
     ExchangeBoard.EnumerateExchanges().ForEach(b => _exchanges[b.Name]   = b);
     ExchangeBoard.EnumerateExchangeBoards().ForEach(b => _boards[b.Code] = b);
 }