Я традиционно реализовал 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
) потому что я всегда понимал, что вам нужно использовать примитивные типы только в представлении.В репозитории (например, NHibernate
), если я хочу отобразить список элементов в DataGridView
, я должен передать общую коллекцию (IList<T>
) из модели в Presenter.Нарушает ли это правило, лежащее в основе представлений, состоящее только из примитивных типов, или это будет архитектурно нормально?
Даже если бы у меня был объект передачи данных (DTO), это был бы скорее контролирующий контроллер, чем стиль пассивного представления, который я пытаюсь реализовать.
Мысли ??