私はDI問題に遭遇しました。 このソリューションは、クラスライブラリとWebApi2アプリケーション(クラスライブラリを消費し、APIを公開します)で構成されています。クラスライブラリ内の依存関係注入
私は、プロジェクトのすべてのDIを設定するクラスライブラリにAutofac.moduleを定義しました。
WebApi2プロジェクトでは、(Autofac.WebApi2を使用して)DIコンテナを作成し、モジュールをクラスライブラリからロードします。 WepApi2プロジェクトのapiコントローラがクラスライブラリのサービスを要求すると、すべての依存関係が作成されます。このすべてがうまくいきます!
問題は、私は今、私がリフレクションを使ってこれを行う唯一の方法を知っている限り、クラスライブラリが文字列からいくつかのクラスをインスタンス化する必要があることです。このように:
var ruleType = Type.GetType(rule.RuleImplementation.Implementation);
var rule = (IRule)Activator.CreateInstance(ruleType,param1,param2);
問題はiRuleのインタフェースを実装するクラスも解決を取得する必要がある依存関係を持っており、これが今の私はしばらくの間、私のキーボード上の私を叩いて作ったものであるということです。
反射とautoFacを併用してオブジェクトをインスタンス化することはできますか?私はまだオブジェクトに私のparamsを渡すことができる必要があります。
...または(webApi2アセンブリで作成された)コンテナに何らかの形でアクセスして解決する方法がありますか?私はこれがアンチパターンと考えられるサービスパターンの一種だろうと思う。
どうすればいいですか?すべての入力は非常に感謝しています。
私はこの解決策が好きです。私が唯一の欠点を見る限り、実行時に私がDBに照会するときに最初に知っているので、それらが必要であるかどうかにかかわらず、すべてのルールを私のサービスに注入しなければならないということです。 – iCediCe