我正在编写一个小型 wpf 桌面应用程序。我的 BaseViewModel 看起来像这样:
public abstract class BaseViewModel : INotifyPropertyChanged, IComparable<BaseViewModel>
{
public abstract string GetDisplayText();
public abstract string GetImageName();
// INotifyPropertyChanged
}
我一直在为 mvvm 寻找最好的 paxis。大多数人说,一个模型有多个 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 不应相互派生。这也在这篇文章中得到了回答。我的问题是:
为什么我不应该以这种方式推导?
在没有继承的情况下处理 sutch基础知识的正确方法是什么?
慕尼黑5688855
至尊宝的传说
相关分类