/// <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); }