次のようなインターフェイスと実装クラスがある場合
public interface IA {}
public class X : IA {}
public class Y : IA {}
次に、この登録は問題ありません
var w = new WindsorContainer();
w.Register(Component.For<IA>().ImplementedBy<X>());
w.Register(Component.For<IA>().ImplementedBy<Y>());
と同じ
var w = new WindsorContainer();
w.Register(Component.For<IA>().Instance(new X()));
w.Register(Component.For<IA>().Instance(new Y()));
しかし、具象クラスを次のように登録しようとすると
var w = new WindsorContainer();
var x1 = new X();
var x2 = new X();
w.Register(Component.For<X>().Instance(x1));
w.Register(Component.For<X>().Instance(x2));
それは例外をスローします:Castle.MicroKernel.ComponentRegistrationException : Component X could not be registered. There is already a component with that name. Did you want to modify the existing component instead? If not, make sure you specify a unique name.
制限が意図されている場合、その理由は? 必ずしも必要ではないインターフェイスを追加せずにコレクションの解決を達成する方法はありますか?