public void OnTrade(ExchangeUpdate exchangeUpdate) { if (exchangeUpdate == null) { throw new ArgumentNullException(nameof(exchangeUpdate)); } if (exchangeUpdate.Trades == null) { throw new ArgumentNullException(nameof(exchangeUpdate.Trades)); } var market = exchangeUpdate.Market; var trades = exchangeUpdate.Trades; var updateDate = exchangeUpdate.UpdateDate; lock (managers) { if (!managers.TryGetValue(market, out var tradesHistoryManager)) { throw new ArgumentException($"Market {market} is not supported."); } tradesHistoryManager.OnTrade(trades, updateDate); } }