Я строю базовый пустой контейнер для замены телефонного контейнера в Caliburn.Micro, поскольку я хочу придерживаться одного контейнера IoC для нескольких проектов. Плюс это весело ...
Одним из способов является регистрация в телефонных службах, которая выглядит следующим образом:
public void RegisterPhoneServices(bool treatViewAsLoaded = false)
{
var _phoneService = new PhoneApplicationServiceAdapter(_rootFrame);
var _navigationService = new FrameAdapter(_rootFrame, treatViewAsLoaded);
_kernel.Bind<INavigationService>().ToMethod(x => _navigationService);
_kernel.Bind<IPhoneService>().ToMethod(x => _phoneService);
_kernel.Bind<IEventAggregator>().To<EventAggregator>().InSingletonScope();
_kernel.Bind<IWindowManager>().To<WindowManager>().InSingletonScope();
_kernel.Bind<TaskController>().ToSelf().InSingletonScope();
var _taskController = Kernel.Get<TaskController>();
_taskController.Start();
}
Часть, которую я не понимаю, заключается в том, почему INavigationService и IPhoneService привязаны к анонимным методам, а не к стандартному связыванию.
I THINK причина в том, что это правильный способ привязки к объекту, для которого вы уже определили экземпляр (как в случае с строками выше), но я ненавижу видеть код, а не зная, что он делает. Я прав в своем предположении?