ASP.NET MVC プロジェクトで Simple Injector を使用しています。SimpleInjector.Integration.Web.Mvc
nuget パッケージを追加しました。SimpleInjectorInitializer
これにより、フォルダにクラスが追加されApp_Start
、DI が初期化されます。コードは次のようになります
public static void Initialize()
{
// Did you know the container can diagnose your configuration?
// Go to: https://simpleinjector.org/diagnostics
var container = new Container();
//Container configuration code
DependencyResolver.SetResolver(
new SimpleInjectorDependencyResolver(container));
}
これにより、MVC コントローラーの DI が正しく構成されます。
私の質問は、コントローラー\クラスのいずれかでコンテナーのインスタンスを取得して、依存関係を手動で解決したい場合、どうすればよいかということです。
私は以前に AutoFac に取り組んできましたが、IComponentContext
手動で解決する必要があるクラスに注入できる依存関係インターフェイスがあります。
更新:
これがシナリオです。私のコントローラーは、初期化がコントローラーメソッドで渡された入力パラメーターに依存するサービスを使用しているため、構築時に依存関係をインスタンス化できません。
これは多少DIのアンチパターンであることは理解していますが、いくつかの場所では要件であるため、DIコンテナを注入することが次善の策です. シンプルなインジェクターのサンプルでは、回避したいコンテナーを共有するために静的変数を使用する必要がありますSimpleInjectorInitializer
。