我们正在使用 WPF/Caliburn Micro 和 Ninject 并有一个引导程序调用它:-
Bind<IEventAggregator>().To<EventAggregator>().InSingletonScope();
我的理解是,每次实例化一个对象时,这将被注入到构造函数参数列表中,但在某些情况下构造函数必须是无参数的。当我们可以在构造函数中没有参数时,我们如何访问 EventAggregator?
看看服务定位器模式。
更新
回应您的评论:
InSingeltonScope()
意味着 Ninject 将只创建一个实例,并且每当它被要求提供一个实例时,IEventAggregator
它都会返回该实例。你仍然需要一个机制来请求它;在注入的情况下,构造函数要求注入它。如果您的构造函数是无参数的,那么服务定位器就是您请求实例的方式。
更新 2
以下是一些您可能会觉得有用的链接:
http://stefanoricciardi.com/2009/09/25/service-locator-pattern-in-csharpa-simple-example/
http://blog.longle.net/2012/02/15/wrapping-the-ninject-kernel-with-servicelocator/