0

私はキャッスルウィンザーを初めて使用します。MVC4 アプリで正しくセットアップして機能させました。簡潔にするために、影響を受ける私のソリューションのレイアウトは次のとおりです。

Entities.dll -ICompanyRepository

DAL.dll - Company:ICompanyRepository

基本的に、上記のように一連のクラスとインターフェースを設定しているので、必要に応じて別のリポジトリで DAL を切り替えることができます。私は現在、以下を使用して、Castle Windsor にクラスとインターフェースを登録しています。

container.Register(Component.For<Entities.ICompanyRepository>().ImplementedBy<DAL.Company>().LifestyleTransient());

それを実装する私のインターフェイスとクラスは別のプロジェクトにあるため、私のプロジェクトのdllです。私がやりたいのですが、理解できないのは、上記のような1つのブランケット構成行を使用することです:

container.Register(AllTypes.FromAssemblyNamed("Entities"));

いろいろな組み合わせを試しましたが、うまくいきません。何か案は?それがより良いオプションである場合、私は構成ファイルからロードすることにオープンです。

4

1 に答える 1

1

すべてのリポジトリが IRepository などの共通インターフェイスを実装していると思いますが、そうでない場合は、IoC の目的だけでなく...

共通のインターフェイスに基づいてすべてのコンポーネントを登録するために、次の登録を使用できます。インストーラーはエントリポイント プロジェクトに配置する必要があるため、他のすべてのプロジェクト/dll を表示できる必要があります。

container.Register(Classes
.FromAssemblyNamed("DAL")//assembly containing concrete types
.BasedOn(typeof(IRepository<>))
.WithService.DefaultInterfaces()//concrete will be associated(windosr configuration) with closest interface
.Configure(c => c.YourPolicystrategy()));
于 2013-01-15T08:21:28.290 に答える