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 предоставляет лучший способ сделать это?
Любая помощь очень ценится.
Благодарю.