Castle Windsor - como resolver componentes com base em parâmetros do construtor
Digamos que eu tenho um componente como este
public class MyComponent
{
public MyComponent(string name)
{
}
}
Basicamente, quero que os parâmetros do construtor fornecidos se comportem como parte do identificador do componente ao resolvê-lo. Se você nunca o resolveu com esse conjunto de parâmetros, ele instancia um novo.
Em outras palavras, quero modificar de alguma forma o seguinte teste para obter êxito:
IWindsorContainer container = new WindsorContainer();
container.Register(Component.For<MyComponent>());
MyComponent a1 = container.Resolve<MyComponent>(new { name = "a" });
MyComponent a2 = container.Resolve<MyComponent>(new { name = "a" });
MyComponent b = container.Resolve<MyComponent>(new { name = "b" });
Assert.AreSame(a1, a2);
Assert.AreNotSame(a1, b);
No momento, ele falha porque será instanciado com name = a, em seguida, retornará o mesmo objeto para todo o nome futuro = ae name = b.
Obrigado!