Здравствуйте, Qulac, Вы писали:
Q>Здравствуйте, AlexNek, Вы писали:
AN>>MVP с одним окошком проблем не вызывает.
AN>>А вот с двумя никак не придумаю, как лучше.
AN>>Проблема в том, что для вставки документа нужно иметь "указатель" на документ.
AN>>А ни интерфейсу вьюва ни презентеру "не положено знать" об используемой технологии GUI. Ну типа того — сегодня винформс, завтра впф.
Q>Значит нужен кто-то третий, кто все это будет знать.
Можно и третий, но проблемы остаются: будет ли команда создания окна приходить в презентер или этот третий будет всё делать сам. Или этот третий будет просто обрабатывать команду.
Что может знать этот "третий"?
AN>>Пока приходится всё в форме делать.
AN>>...
AN>>Хотя пожалуй, только что придумал, что скажете?
AN>>Главная форма говорит своему презентеру "создай новое окошко".
AN>>Презентер "говорит" интерфейсу вьюва "создай новое окошко", а в ответ получает презентер нового окошка.
Q>Если все просто, то вполне подходящее решение. Я вообще в mvp и mvvm использую такой подход: есть служебный класс который занимается создание форм и связыванием со все остальным, его можно так же связать с ioc-контейнером. Вот примерный код:
Q>Q>public static class WindowService
Q> {
Q> //регистрируем тип формы и презентера. Вызывается в начале метода Main для каждого класса формы
Q> public static void Register<TView,TPresenter>()
Q> {
Q> }
Q> // отображает форму и возвращает ее объект.
Q> public statiс TView Show<TPresenter,TView>(){}
Q> }
[#яяяя]
Q> public class PresenterBase
Q> {
Q> private IView _view;
Q> private Model _model;
Q> public PresenterBase()
Q> {
Q> _view= WindowService.Show<PresenterBase,IView>();
Q> _model=new Model();
Q> }
Q> }
Q>
Q>Просто, минимум кода, можно допилить под любые потребности. 
Вообще то тут у меня вопросов больше чем ответов.
— Какого WindowService знает и "M" и "V" и "P" и "GUI"?
— отчего каждый презентер создает модель?
— где происходит переход от типов к "инстансу"?
— Если у меня несколько документов с одним въювом и презентером — какой из них показывать?
Может лучше
mvcsharp пользовать тогда?