Caliburn fornisce un modo per ottenere un riferimento al contenitore da qualsiasi luogo?
-
20-08-2019 - |
Domanda
Attualmente sto scherzando con il framework Caliburn di Rob Eisenberg. Guardando la documentazione fornita su http://caliburn.codeplex.com c'è un esempio di come per risolvere un servizio Caliburn dal contenitore.
È qualcosa del genere:
SimpleContainer container = new SimpleContainer();
CaliburnFramework
.ConfigureCore(container)
.WithCommonDialogs()
.WithPresentationFramework()
.Start();
var service = container.GetInstance(typeof (IService)) as Service;
Tuttavia, ciò che mi manca è un modo per ottenere un riferimento al contenitore in qualsiasi punto dell'app. In questo modo:
var service = Caliburn.Container.GetInstance(typeof(IService))as Service;
Devo creare una classe statica personalizzata che contenga un riferimento al contenitore o c'è qualcosa di già incorporato in Caliburn?
Grazie in anticipo e cordiali saluti!
Soluzione
L'ultima versione del trunk di Caliburn registra automaticamente il contenitore all'avvio del framework come localizzatore di servizi. Devi solo fare riferimento a Microsoft.Practices.ServiceLocation
sul tuo codice e quindi chiedere a ServiceLocator
un'istanza del tuo servizio.
var service = ServiceLocator.Current.GetInstance<IService>();
Spero che sia d'aiuto.