0

lightinject を使用する場合、外部構成ファイルの文字列値を使用して、ファイルに記載されているサービスを登録するようコンテナーに指示する方法はありますか? これは、xml ファイルまたは web.config ファイルにあります。

たとえば、私の web.config の以前のプロジェクトでは、次の行があります。

 <add key="PersonRepository.Interface.IPersonRepository" value="PersonRepository.Db.DbRepository,
     PersonRepository.Db, Version=1.0.0.0, Culture=neutral"/>

WebConfigurationManager 呼び出しで値を取得できました。この例では、具象クラス PersonRepository.Db.DbRepository 名を文字列として取得し、依存関係の解決に使用できます。これは私が過去に使用した方法ですが、lightinject で同じことを行う方法がわかりません。これは可能ですか?

これが少し混乱している場合はお詫びします。これは、依存性注入への私の最初の適切な進出です。

どうもありがとう。


またあったね。あなたが説明した方法を数日間実装しようとしましたが、うまくいきませんでした。これを簡潔に説明します。

 var myString = "hello";
 Type stringType = Type.GetType(myString);
 container.Register<ICloneable, stringType>();

コンパイラからエラーが発生します 'stringType' は変数ですが、型のように使用されます。

ここでさらに読むと;

Generic のテンプレートとして typeof または GetType() を使用するには?

これは言語の制限のようです。何か考えはありますか?どうもありがとう。

4

1 に答える 1

1

LightInject は XML ファイルを直接操作することはできませんが、構成マネージャーを介してサービス タイプと実装タイプの両方にアクセスできるはずです。次に、Type.GetType(typeName) などを使用して型を解決し、サービスをコンテナーに登録する必要があります。

そうは言っても、コンテナーの構成を構成ファイルからコード (構成ルート) に移動することを強くお勧めします。サービスと実装型の間のマッピングは、コンパイル後にほとんど変更されず、厳密に型指定された構成の利点が得られます。

于 2016-10-04T08:03:09.720 に答える