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!

questionAnswers(1)

yourAnswerToTheQuestion