Я пишу небольшое настольное приложение wpf.Моя BaseViewModel выглядит так:
public abstract class BaseViewModel : INotifyPropertyChanged, IComparable<BaseViewModel>
{
public abstract string GetDisplayText();
public abstract string GetImageName();
// INotifyPropertyChanged
}
Я искал лучший paxis для mvvm.Большинство говорят, что существует несколько ViewModel для одной модели, и я согласен с этим.
Поскольку я хочу, чтобы все ViewModel одного типа обрабатывали основы одинаково, я думаю,они должны быть получены друг от друга.
public abstract class BaseCustomerVm : BaseViewModel
{
public abstract string Name { get; set; }
public abstract int Number { get; set; }
public abstract bool IsPerson { get; set; }
public override string GetDisplayText()
{
return Name;
}
public override string GetImageName()
{
if (IsPerson)
return "Person";
else
return "Company";
}
}
public class Customer1Vm : BaseCustomerVm
{
public override string Name { get; set; }
public override int Number { get; set; }
public override bool IsPerson { get; set; }
}
Для реализации этого у меня есть следующие опции:
Версия 1:
public class Customer2Vm : BaseCustomerVm
{
public override string Name { get; set; }
public override int Number { get; set; }
public override bool IsPerson { get; set; }
// Further Properties
}
Версия 2:
public class Customer2Vm : Customer1Vm
{
// Further Properties
}
В моем поиске я читал, что ViewModels не должны происходить друг от друга.На это также ответили в этом посте .Мои вопросы:
- Почему бы мне не выводить таким образом?
- Каким будет правильный способ обработки таких основ основ без наследования?