1

我有一些创建和编辑具有公共属性的视图模型。我在网上读到,对视图模型使用继承是邪恶的。所以,我想知道拥有这些类型的视图模型是否安全。

public class CustomerVM
{
   public int CustomerId {get;set;}
   public string Name { get; set;}
}

public class CustomerCreateVM : CustomerVM
{
   public dictionary<string,string> ModelCustomers { get; set;}
}

public class CustomerEditVM : CustomerVM
{
   public List<Orders> OrdersList {get;set;}
}

应用程序中不使用 CustomerVM,它仅用于存储常用属性。

4

2 回答 2

2

论据:

“最佳实践”的理念越来越趋向于“胖模特”。因此,模型驱动的设计非常宝贵。因此具有排列和抽象是可取的

反对:

由于模型实际上是用于将数据传递给视图,因此最好使用简单。这符合“控制器主导逻辑”的思想。

摘要: 绝对不是邪恶的。

甚至不坏。推荐与否取决于您是否为数据处理争取“胖”复杂模型/“瘦”控制器或简单(更指向非复杂)模型。

我个人倾向于模型的简单性。但是我已经看到了足够多的千疮百孔的控制器来欣赏另一面。

于 2013-02-16T02:07:32.097 回答
0

正如俗话说的“偏好组合胜于继承”。在 CustomerEdit 上拥有 CustomerVM 的属性比以这种方式使用继承要好。在您发布的简单案例中,我认为这并不重要,但是随着系统的增长,如果您习惯于使用继承,随着模型的复杂性和层次结构深度的增加,事情可能会开始变得丑陋。

于 2013-02-17T17:57:32.053 回答