有个更好的方法。首先,启用Web 集成模块。这将启用自动属性注入到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>();