23

Castle.Windsorに2つのインターフェイスを持つ1つのクラスを登録したいと思います。

このコードは機能しますか...両方のインターフェイスにインスタンスが1つだけありますか...

Component.For<IEnvironment>().ImplementedBy<OutlookEnvironment>().LifestyleSingleton()
Component.For<IOutlookEnvironment>().ImplementedBy<OutlookEnvironment>().LifestyleSingleton()

私の環境は常に同じインスタンスである必要があるため、これを再確認する必要があります...

したがって、IEnvironmentインターフェイスを使用して解決する場合、コンポーネントを解決するためにIOutlookEnvironmentを使用する場合と同じインスタンスを取得する必要があります。

4

1 に答える 1

55

Component.Forメソッドのusemulti-generic-parameteroverloadを使用する必要があります

Component.For<IEnvironment, IOutlookEnvironment>()
         .ImplementedBy<OutlookEnvironment>()
         .LifestyleSingleton()

ドキュメント:複数のサービスへのコンポーネントの登録セクションも参照してください。

于 2013-02-07T18:04:23.173 に答える