Castle Windsor: заставляет решатель использовать указанный конструктор

Вот пример:

interface IComponentA {};

class ComponentA : IComponentA { };

interface IComponentB { };

class ComponentB : IComponentB { };

interface IComponentC { };

class ComponentC : IComponentC
{
    public ComponentC(IComponentA a)
    {
        Console.WriteLine("Constructor A"); 
    }

    public ComponentC(IComponentB b) 
    {
        Console.WriteLine("Constructor B");
    }
};

Все эти компоненты зарегистрированы в контейнере Castle Windsor.

Но классComponentC имеет 2 перегруженных конструктора. Любой из них может быть использован приComponentC активируется.

я нуждаюсьComponentC(IComponentB b) конструктор, который будет использоваться.

На данный момент я использую метод UsingFactoryMethod () для решения этого:

container
    .Register(Component
        .For<IComponentA>()
        .ImplementedBy<ComponentA>())
    .Register(Component
        .For<IComponentB>()
        .ImplementedBy<ComponentB>())
    .Register(Component
        .For<IComponentC>()
        .UsingFactoryMethod(() => new ComponentC(
            container.Resolve<IComponentB>())));

Это работает, но, вероятно, Castle Windsor предоставляет лучший способ сделать это?

Любая помощь очень ценится.

Благодарю.

Ответы на вопрос(2)

Ваш ответ на вопрос