DIを使用してビジネスレイヤーを構築するプロジェクトがありますが、私は追加ステップを実行し、Windsorを使用してオブジェクト構築を管理しようとしています。城ウィンザー:基本的な型がアセンブリにアクセスできない場合、ファクトリメソッドを登録するにはどうすればよいですか?
のは、ちょうど私が次のインターフェイスを介してアクセスすることができ、既存のデータ層(私は変更したくないということ)、あるとしましょう:私のビジネス層のクラスの
interface IDataFactory {
IDataService Service { get; }
}
シリーズ
IFactory factory = DataFactory.NewFactory();
IBusinessService service = new ConcreteBusinessService(factory.Service);
私は城ウィンザーコンテナにIBusinessServiceを登録するために、私はこのようなコードを使用したいということを理解:
IDataFactoryを通じて公開されるサービスに依存して私の人生の間、自分の既存のファクトリオブジェクトを使用して、データレイヤからサービスを登録する方法がわかりません。要するに、私が言いたい:
container.AddComponent("dataService", typeof(IDataService), factory.service);
ウィンザーは私がcontainer.AddComponent( "DataServiceの"、typeof演算(IDataService)、typeof演算(SomeConcreteDataService)を)言いたいようだが、この場合には、 ConcreteDataServiceはそのアセンブリの内部にあり、したがって私の中ではアクセスできません。
SomeConcreteDataServiceが自分のアセンブリに認識されていないとすれば、データサービスを配線する方法はありますか?
This questionは、私の場合を除いて、私自身に非常に似て、AddComponent( "電卓"、typeof演算(ICalcService)、typeof演算(CalculatorService)、 "作成" を参照)。コールは機能しません - CalculatorServiceは別のアセンブリの内部にあり、コンテナのアセンブリ配線には使用できません。