Предоставляет ли 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>();

Надеюсь, это поможет.

Другие вопросы по тегам