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!

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top