Предоставляет ли Caliburn способ получить ссылку на контейнер из любого места?
В настоящее время я возлюсь с системой Caliburn Роба Айзенберга. При просмотре документации, представленной на сайте http://caliburn.codeplex.com/ приведен пример того, как разрешить службу Caliburn из контейнера.
Это что-то вроде этого:
SimpleContainer container = new SimpleContainer();
CaliburnFramework
.ConfigureCore(container)
.WithCommonDialogs()
.WithPresentationFramework()
.Start();
var service = container.GetInstance(typeof (IService)) as Service;
Однако чего мне не хватает, так это способа получить ссылку на контейнер в любом месте приложения. Как это:
var service = Caliburn.Container.GetInstance(typeof(IService))as Service;
Нужно ли создавать собственный статический класс, который содержит ссылку на контейнер, или в Caliburn уже что-то встроено?
Заранее спасибо и всего наилучшего!
1 ответ
Последняя транковая версия Caliburn автоматически регистрирует контейнер при запуске платформы в качестве локатора службы. Вы просто должны ссылаться Microsoft.Practices.ServiceLocation
в вашем коде, а затем спросите ServiceLocator
для примера вашего обслуживания.
var service = ServiceLocator.Current.GetInstance<IService>();
Надеюсь, это поможет.