public SmartOrderRoutingEngine(IProvideMarkets provideMarkets, ICanRouteOrders canRouteOrders, ICanReceiveMarketData canReceiveMarketData) { this.provideMarkets = provideMarkets; this.canRouteOrders = canRouteOrders; this.canReceiveMarketData = canReceiveMarketData; var availableMarkets = provideMarkets.GetAvailableMarkets(); this.markets = availableMarkets.ToDictionary(market => market, market => market); this.marketSnapshotProvider = new MarketSnapshotProvider(availableMarkets, canReceiveMarketData); }