もっと良い方法があります。まず、 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>();