2 つのプロジェクトがあります。1 つは MVC サイトで、もう 1 つはクラス ライブラリです。MVC サイトはクラス ライブラリを参照します。
IWindsorInstaller
MVC サイトとクラス ライブラリに を実装しています。MVC サイトには、クラス ライブラリで定義されたクラスを直接参照するコードはありません。それらはすべて、別の場所で定義されたインターフェイスの実装です。
MVCサイトでは、アプリ起動でいつも通りやってます
var container = new Castle.Windsor.WindsorContainer();
container.Install(FromAssembly.InThisApplication());
これは、クラス ライブラリのインストーラーを呼び出しません。ただし、これを行うと
container.Install(FromAssembly.Containing<ClassFromTheClassLibrary>());
インストーラーが 2 回呼び出されます。InThisApplication
キャッスルがピックアップするには、他のアセンブリへの実際のコード内参照が必要なようです。これを行うだけでこれを修正できます:
container.Install(FromAssembly.This());
container.Install(FromAssembly.Containing<ClassFromTheClassLibrary>());
しかし、他のアセンブリを直接参照する必要がないことを望んでいました。
更新名前空間は次のとおりです。
- MVC アプリは MyApp.OnlineProducts.Service です
- クラス ライブラリは MyApp.Individuals.Service です