Le test d'unité ci-dessous échoue et je cherche une raison valable de le faire.Castle Windsor: Le réenregistrement d'un composant nommé maintient le style de vie précédent
interface IFoo { }
class Foo : IFoo { }
class Foo2 : IFoo { }
[TestMethod]
public void LifestyleTest4()
{
WindsorContainer container = new WindsorContainer();
container.Register(Component.For<IFoo>().ImplementedBy<Foo>().Named("foo").LifeStyle.Singleton);
IHandler h = container.Kernel.GetHandler("foo");
Assert.IsTrue(h.ComponentModel.LifestyleType == LifestyleType.Singleton);
bool removed = container.Kernel.RemoveComponent("foo");
Assert.IsTrue(removed);
container.Register(Component.For<IFoo>().ImplementedBy<Foo2>().Named("foo").LifeStyle.Transient);
h = container.Kernel.GetHandler("foo");
//Assert will fail as LifestyleType == Singleton
Assert.IsTrue(h.ComponentModel.LifestyleType == LifestyleType.Transient, "Expected Transient Lifestyle");
}
Même si le composant a été retiré du conteneur, il semble qu'une référence au LifeStyle est maintenue par son nom. J'utilise la version 2.0.
Veuillez le signaler à la liste des utilisateurs ou à donjon (http://www.castleproject.org/issuetracker.html) –