dans mon application asp.net-mvc J'ai une application MvcApplication qui appelle une méthode statique CreateContainer().Pourquoi cette instance initiée par Unity n'est-elle pas un singleton?
Dans cette méthode, je crée mon unité contenant coi:
private static IUnityContainer CreateContainer()
{
var container = new UnityContainer();
container.RegisterType<IConfigurationService, ConfigFile>();
container.RegisterType<ILoggerService, NlogLoggerService>();
container.RegisterInstance<ISearchService>(
new LuceneSearchService(
container.Resolve<IConfigurationService>(),
container.Resolve<ILoggerService>()),
new ContainerControlledLifetimeManager());
}
Si je comprends mes sources bien, cela devrait me donner un singleton exemple LuceneSearchService. Dans ma journalisation cependant, je peux voir que mon constructeur est frappé chaque fois que cette instance est demandée.
Qu'est-ce que je fais mal?
P.S. Est-ce juste moi, ou est-ce que 'var' est le mot-clé le plus surutilisé, mal utilisé, et mal compris dans C# maintenant? – TJMonk15
+1. Notez qu'il est dit "ContainerControlledLifetimeManager", pas "Singleton". Puisque l'OP crée un nouveau conteneur à chaque fois, la durée de vie est très courte. Notez également que UnityContainer est IDisposable. – TrueWill
Je n'utilise pas ASP.Net MVC ou Unity (si c'est quelque chose de différent de MVC?). Je sais juste comment faire un singleton :-P – TJMonk15