キャッスルウィンザーにIOCコンテナを作成しようとしていますが、その構成はアセンブリ間で共有されています。Castle Windsor IOCコンテナで流暢な構成を共有する方法
(どのような次はこれがユニティでどのように機能するかの一例である。私が何をしたいのか、それは城ウィンザーを使用して同じように動作させるためである)
私は、次のプロジェクト構成を持っている...
TestCompany.Services.Host
(Web project hosting a number of .svc files)
PrintService.svc
Web.Config
Unity.Config
TestCompany.Services.PrintService
IPrintService.cs
PrintService.cs
私の "PrintService"の実際の実装は、Services.Hostではなく、TestCompany.Services.PrintServiceアセンブリ内で実装されています。私の共有プロジェクトのコードの一部として
(図示せず)私はユニティ・コンフィギュレーションをロードする責任があるコンテナヘルパーを持っている...
public static IUnityContainer GetContainer()
{
// Checks for existance of container (_container == null) ommitted.
var section = ConfigurationManager.GetSection("unity") as UnityConfigurationSection;
section.Configure(_container, name);
...
...
}
この方法はUnity.Configからユニティ構成セクションをロードしますコンテナの設定に使用します。
この方法の利点は、AppDomainが1つのUnity.Configが複数のアセンブリにサービスを提供できることです(私は推測します)。私のサービスホストによって消費されたアセンブリからGetContainer()を呼び出すだけで、同じタイプの解像度などが設定されたコンテナが返されます。
Castle Windsorの流暢な設定を使用したいのですが、共有することができる構成ファイルを作成します。 PrintServiceと将来のサービスはすべて同じ依存関係を解決する必要があり、これらのサービス間で流暢な設定を繰り返す必要はありません。
理想的には、使用するアセンブリのすべてに「フロー」できるサービスホストアプリケーションで構成された、ある種のコンテナが必要です。
ありがとうございました。
なぜ2つの異なるコンテナフレームワークを同時に使用していますか? – Steven
私は城で何をしたいのかをデモンストレーションしています。 # – Remotec