2009-06-26 5 views
1

В настоящее время я возился с рамкой Калиберна Роба Эйзенберга. При просмотре документации, представленной на странице http://caliburn.codeplex.com, приведен пример того, как разрешить обслуживание Caliburn из контейнера.Предоставляет ли 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

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

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

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