Есть лучший способ. Сначала включите модуль веб-интеграции . Это включит автоматическое внедрение свойств в экземпляр Page .
Поскольку вашему докладчику требуется представление в его конструкторе, ваша страница должна зависеть от докладчика фабрика вместо самого докладчика.
Итак, сначала вам нужна фабрика презентаторов, которая является делегатом с необходимыми параметрами:
public delegate IOCTestPresenter IOCTestPresenterFactory(IIOCTestView view);
Этот делегат должен соответствовать параметрам (типу и имени) конструктора презентатора:
public class IOCTestPresenter
{
public IOCTestPresenter(IIOCTestView view)
{
}
}
По вашему мнению, добавьте свойство, получающее делегат фабрики, и используйте делегата для создания презентатора:
public partial class IOCTest
{
public IOCTestPresenterFactory PresenterFactory {get;set;}
protected void Page_Load(object sender, EventArgs e)
{
var presenter = PresenterFactory(this);
}
}
В настройках вашего контейнера вам нужно будет сделать следующие регистрации:
builder.Register<IOCTestPresenter>().FactoryScoped();
builder.RegisterGeneratedFactory<IOCTestPresenterFactory>();