Я создаю базовый контейнер ninject для замены контейнера телефона в Caliburn.Micro, поскольку я хочу придерживаться одного контейнера IoC для нескольких проектов. Плюс его весело ...Понимание того, что делает это связывание ninject
Одним из методов является зарегистрировать телефонные услуги, которые выглядят следующим образом:
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 Причина в том, что это правильный способ привязки к объекту, для которого вы уже определили экземпляр (как это имеет место в строках выше), но мне не нравится видеть код и не знаю, что это делает. Правильно ли я в своем предположении?
Sweet, cheers, Когда я просмотрел код, я был уверен, что это то, что он делает, но я действительно хотел быть уверенным, прежде чем использовать его. – deanvmc