0

我们正在使用 WPF/Caliburn Micro 和 Ninject 并有一个引导程序调用它:-

Bind<IEventAggregator>().To<EventAggregator>().InSingletonScope();

我的理解是,每次实例化一个对象时,这将被注入到构造函数参数列表中,但在某些情况下构造函数必须是无参数的。当我们可以在构造函数中没有参数时,我们如何访问 EventAggregator?

4

1 回答 1

0

看看服务定位器模式

更新

回应您的评论: 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/

于 2012-11-19T14:30:22.127 回答