Is there a way I can write the following class such that the setting of DataService
, ExpenseType
and VatRatesSource
need be coded only once:
public class NewExpenseViewModel
{
private readonly IDataService DataService;
public ExpenseType ExpenseType { get; set; }
CollectionViewSource VatRatesSource { get; set; }
public ICollectionView VatRatesView => VatRatesSource.View;
private IEnumerable<VatRate> VatRates => (IEnumerable<VatRate>)VatRatesSource.Source;
public NewExpenseViewModel(ServiceProvider serviceProvider, ExpenseType expenseType, VatRate vatRate)
{
DataService = serviceProvider.GetService<IDataService>();
ExpenseType = expenseType;
VatRatesSource = new CollectionViewSource() { Source = DataService.GetVatRates() };
VatRate = VatRates.FirstOrDefault(v => v.VatRateID.Equals(vatRate.VatRateID));
}
public NewExpenseViewModel(ServiceProvider serviceProvider, ExpenseType expenseType)
{
DataService = serviceProvider.GetService<IDataService>();
ExpenseType = expenseType;
VatRatesSource = new CollectionViewSource() { Source = DataService.GetVatRates() };
VatRate = VatRates.FirstOrDefault(v => v.VatRateID.Equals(ExpenseType.SuggestedVatRateID));
}
}