J'ai expérimenté avec le SimpleServiceLocator, et je l'aime un peu, mais il y a une chose que je suis vraiment frustré par - vous ne pouvez pas utiliser l'injection automatique de constructeur pour les singletons. Pour aggraver les choses, vous ne pouvez même pas utiliser l'injection automatique de constructeur pour ses dépendances . Vous devez créer l'objet singleton, toutes ses dépendances, toutes ses dépendances, etc. manuellement.SimpleServiceLocator: Pourquoi l'injection automatique de constructeur n'est-elle pas prise en charge pour les singletons?
Pourquoi SimpleServiceLocator est-il conçu de cette manière?
Les singletons ne sont-ils pas supposés être comme des instances régulières, sauf que, à la première requête d'une instance, cette instance est stockée et réutilisée au lieu qu'une nouvelle instance soit créée à chaque fois? Pourquoi SimpleServiceLocator a-t-il besoin d'une instance à fournir au cours du processus d'enregistrement plutôt que de simplement autoriser la création et le stockage de l'instance à la première demande? Je comprends que le point de SimpleServiceLocator est de ne pas avoir beaucoup de cloches et d'être très facile à utiliser pour les débutants, mais il semble que ce soit juste mal conçu, et que la méthode d'enregistrement d'un singleton soit identique à la méthode pour enregistrer une instance régulière, sauf que le nom de la méthode doit être RegisterSingle<T>()
au lieu de Register<T>()
. Y a-t-il une raison pour le design plus compliqué (et apparemment moins pratique) que je ne reçois pas? En attendant, existe-t-il un autre conteneur IOC (de préférence gratuit) que je peux utiliser pour enregistrer des objets dans le code de la même manière que SimpleServiceLocator, mais qui permet l'injection automatique de constructeurs pour les singletons? singleton)?
Voir cet élément de travail: http://simpleservicelocator.codeplex.com/workitem/14186. – Steven