【发布时间】:2012-02-09 11:42:43
【问题描述】:
我正在构建一个基本的 ninject 容器来替换 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 像它们一样绑定到匿名方法,而不是标准绑定。
我 THINK 原因是因为这是绑定到您已经为其定义实例的对象的正确方法(如上面几行中的情况),但我讨厌看到代码和不知道它做了什么。我的假设是否正确?
【问题讨论】:
标签: c# caliburn.micro ninject-2