EDIT:Château de Windsor Composants Releasing
J'ai terminé reformulé la question comme je l'ai été en mesure de simplifier mon problème à ce qui suit:
var container = new WindsorContainer();
container.Register(Component.For<IFoo>().ImplementedBy<Foo>().LifeStyle.Singleton);
var foo = container.Resolve<IFoo>();
container.Kernel.ReleaseComponent(foo);
var foo2 = container.Resolve<IFoo>();
Assert.IsTrue(foo != foo2) // this fails
public interface IFoo : IDisposable { }
public class Foo : IFoo {
public void Dispose()
{
}
}
Je dois faire quelque chose vraiment stupide ... aucune idée quoi?
Fondamentalement, ce que j'essaye d'accomplir ici est que toutes les résolutions d'un composant retournent la même instance pendant un certain temps (une portée). S'il y a une meilleure façon d'accomplir cela, je suis certainement ouvert à cela.
EDIT: Ok, donc je RTFM et apparemment c'est par conception. Est-ce la meilleure façon d'accomplir ce que je veux ici encore un gestionnaire de style de vie personnalisé?
Merci.
oui, si c'est le comportement que vous voulez, puis style de vie personnalisé, il doit être –
Merci. J'ai ajouté une classe personnalisée héritant de AbstractLifestyleManager pour ce faire, mais Release n'est jamais appelée lorsque j'appelle ReleaseComponent. Il semble que Release ne soit appelée que si le ReleasePolicy.HasTrack du noyau renvoie true, mais cela ne se produit pas pour tous les composants ... Pourriez-vous nous conseiller? Merci. – Jeff