public ViewModelUpdater( IAlphaVantageAPI priceDataSource, IHistoricalDatabase historicalDatabase, ViewModel viewModel ) { _priceDataSource = priceDataSource; viewModel.PropertyChanged += (sender, e) => { switch (e.PropertyName) { case "ApiKey": Update(viewModel.ApiKey, viewModel.Stocks); foreach (var stock in viewModel.Stocks) { var prices = priceDataSource.GetHistoricalPrices(stock.Ticker, 10, viewModel.ApiKey); historicalDatabase.Update(stock.Ticker, prices); } break; case "SelectedStock": var historicalPrices = historicalDatabase.GetPrices(viewModel.SelectedStock.Ticker); viewModel.SelectedHistoricalPrices.Clear(); historicalPrices.ForEach(viewModel.SelectedHistoricalPrices.Add); break; default: throw new Exception($"Unhandled: {e.PropertyName}"); } }; }