ASP.NET MVC アプリケーションで、コントローラーから「サービス」メソッドを呼び出しています。
通常、 という名前のコントローラーReportingController
が からメソッドを呼び出しますReportingServices
。サービス クラスは でインスタンス化されAutofac
ていますMvc.Integration
。
builder.RegisterControllers(Assembly.GetExecutingAssembly());
次に、サービスがコントローラー コンストラクターに挿入されます。
public ReportingController(ReportingServices service)
ここまでは順調ですね。ただし、場合によっては、コントローラーが他のサービスからメソッドを呼び出す必要があります。autofac 構成を変更しました。
builder.RegisterControllers(Assembly.GetExecutingAssembly())
.PropertiesAutowired(PropertyWiringOptions.PreserveSetValues);
そして、コントローラーにプロパティを追加しました:
public CommonServices CommonService { get; set; } // new properties
public ReportingController(ReportingServices service) {} // existing ctor
ただし、コントローラーがインスタンス化されると、特定の ActionMethod によって使用されない場合でも、すべてのプロパティも設定されます。
必要になるまでプロパティのインスタンス化を遅らせるように Autofac に指示するにはどうすればよいでしょうか。または、この不必要な初期化を単に気にする必要はありませんか?