Предоставляет ли Caliburn способ получить ссылку на контейнер из любого места? - PullRequest
1 голос
/ 26 июня 2009

В настоящее время я бездельничаю с фреймворком Роба Айзенберга 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 Ответ

1 голос
/ 07 июля 2009

Последняя версия соединительной линии Caliburn автоматически регистрирует контейнер при запуске платформы в качестве локатора службы. Вам просто нужно сослаться на Microsoft.Practices.ServiceLocation в своем коде, а затем запросить у ServiceLocator экземпляр вашего сервиса.

var service = ServiceLocator.Current.GetInstance<IService>();

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

...