2015-06-16 3 views
0

Я изучаю шаблон MVP и имеют следующие вопросы:MVP в WinForms (ведущий и Program.cs)

Если у меня есть один вид (проект MainForm), одна модель (проект Model) и один ведущий, должен ли я создать новый проект для моего ведущего, или это нормально, чтобы поместить его в проект MainForm?

1) Если ведущий должен быть расположен в отдельном проекте, очевидно, необходима ссылка на MainForm для его конструктора, то, что приводит нас ко второй проблеме:

Когда приложение начинается в Program.cs (который находится в MainForm) Мне нужно, чтобы создать свой ведущий:

static void Main() 
    { 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 
     Presenter presenter = new Presenter(new MainForm()); //Here it is 
     Presenter.Run(); 
    } 

Но, так как ведущий находится в отдельном проекте, я не могу использовать его без ссылки. Тем не менее, уже есть ссылка от ведущего на MainForm, поэтому я не могу его добавить.

2) Если ведущий находится в проекте MainForm, программа запускается нормально, но для использования функций из модели я должен добавить ссылку из проекта MainForm в проект Model, что, я думаю, противоречит шаблону MVP.

Пожалуйста, скажите, как правильно спроектировать мое сульвирование.

ответ

0

Ваш взгляд и модель должны быть независимыми друг от друга и докладчика. Они могут жить в своих проектах, но все будет хорошо в простой программе, чтобы все было в одном проекте.

Если вы действительно хотите их в отдельных проектах, это легко сделать. Основной проект, содержащий класс Program, также будет содержать класс Presenter. Вид (т. Е. Класс MainForm), и Модель будет (может) тогда быть в их собственных проектах.

Иерархия проектов будет выглядеть примерно так:

  • Основной программа EXE проект: содержит Presenter класса и Program класса (т.е. последней точки входа в программе, Main(), как вы показываете в вашем примере коды) , Список литературы включают:
    • Просмотр DLL проекта: содержит MainForm класс (и любые другие классы представлений)
    • модель DLL проекта: содержит класс модели (ов)

Другими словами, вы можете создать проект Windows Forms для основного проекта программы и просто удалите по умолчанию Form1, который создан для вас. Вы можете создать проект библиотеки классов для проекта DLL представления и добавить класс Windows Form к этому проекту для вашего класса MainForm.

Смежные вопросы