在3层体系结构中显示计算属性的最佳实践

时间:2012-06-21 05:27:35

标签: c# visual-studio-2010 design-patterns mvvm

在3层架构中,我有一个带网格的客户订单表格,其中显示了要添加到另一个表示订单商品的网格的商品列表。

项目网格中的一列显示客户上次订购此商品的时间。 现在我有以下代码

public class Order {
   List<Items> items {get;set;}
   }

public class Item {
  int Id {get;set;}
  string Name {get;set;}
}

据我所知,模型不应该更改,所以我不能向Item类添加一个名为LastOrderedDate的属性。

如果没有,我将如何在不破坏架构的情况下在网格中显示它(从最佳实践的角度来看)? 它是我需要的MVVM模式吗?

prototype to clearify the idea

澄清:

当组合中的选定客户发生变化时,LastOrderedDate列也应该更改其数据。

2 个答案:

答案 0 :(得分:1)

  

据我所知,模型不应该更改,所以我无法添加   属性为Item类,名为LastOrderedDate

为什么呢?这正是我要做的。如果视图需要另一条信息,则应将其添加到模型中,以便将其传递给视图。

如果由于某些原因你无法修改Item类,那么你可以创建一个包装类:

class ItemModel
{
    public Item Item { get; set; }
    public DateTimeOffset LastOrderedDate { get; set; }
}

答案 1 :(得分:0)

实际上并不是你所需要的MVVM,但你可以将你的Order / Item类包装在一个MyOrderModel中,该MyOrderModel包含LastOrderDate,其中包含上次添加的Items。

MVVM实际上最适合WPF / Silverlight应用程序,因为它们可以利用DataBinding / Commanding和松散耦合的视图和视图模型。 MVP更有可能适用于winforms。检查此http://sureshkumarveluswamy.wordpress.com/2010/07/31/mvvm-or-mvp-for-winforms/

希望这会有所帮助。