Caliburn fournit-il un moyen d'obtenir une référence au conteneur à partir de n'importe où?
-
20-08-2019 - |
Question
Je suis en train de jouer avec le framework Caliburn de Rob Eisenberg. Si vous consultez la documentation fournie sur http://caliburn.codeplex.com , vous trouverez un exemple de la manière dont pour résoudre un service Caliburn à partir du conteneur.
Cela ressemble à ceci:
SimpleContainer container = new SimpleContainer();
CaliburnFramework
.ConfigureCore(container)
.WithCommonDialogs()
.WithPresentationFramework()
.Start();
var service = container.GetInstance(typeof (IService)) as Service;
Cependant, ce qui me manque, c'est un moyen d'obtenir une référence au conteneur n'importe où dans l'application. Comme ceci:
var service = Caliburn.Container.GetInstance(typeof(IService))as Service;
Dois-je créer une classe statique personnalisée contenant une référence au conteneur ou existe-t-il déjà quelque chose d'intégré dans Caliburn?
Merci d'avance et meilleures salutations!
La solution
La dernière version de tronc de Caliburn enregistre automatiquement le conteneur au démarrage de la structure en tant que service de localisation. Il vous suffit de référencer Microsoft.Practices.ServiceLocation
sur votre code, puis de demander à ServiceLocator
une instance de votre service.
var service = ServiceLocator.Current.GetInstance<IService>();
L’espoir que cela aide.