Вы думаете, что это неправильно. Вы не создаете докладчика в представлении. Вы создаете его в другом месте (запуск приложения, другие докладчики), и оно передается представлению либо в качестве параметра конструктора, либо путем задания свойства.
Как это:
class FooView : IFooView
{
private readonly IFooPresenter presenter;
public FooView(IFooPresenter presenter)
{
this.presenter = presenter;
}
}
class FooPresenter1 : IFooPresenter
{
private readonly IFooView view;
public FooPresenter1()
{
view = new FooView(this);
}
}
// or
class FooPresenter2 : IFooPresenter
{
private readonly IFooView view;
public FooPresenter2(IFooView view)
{
this.view = view;
view.Presenter = this;
}
}
И, кстати, вы, кажется, используете WPF. Если это так, вы можете вместо этого взглянуть на шаблон Model-View-ViewModel .