我传统上实现了一个 Model-View-Presenter [Passive View],如下所示:
interface IView
{
string Title {set;}
}
class frmTextBox : Form, IView
{
...
public string Title
{
set { this.txtTitle.Text = value; }
}
...
}
class frmLabel : Form, IView
{
...
public string Title
{
set { this.lblTitle.Text = value; }
}
...
}
class Presenter
{
private IView view;
...
public void UpdateTitle
{
this.view.Title = "A Good Title";
}
...
}
并且我传统上只在IView
接口中使用原始类型(int
, string
, bool
),因为我一直明白您只需要在视图中使用原始类型。在 Repository(例如NHibernate
)中,如果我想显示 a 中的项目列表DataGridView
,我必须将通用集合(IList<T>
)从 Model 传递给 Presenter。这是否违反了仅由原始类型组成的视图背后的规则,或者这在架构上是否可以?
即使我有一个数据传输对象 (DTO),它也更像是一个监督控制器,而不是我试图实现的被动视图样式。
想法??