当前位置:  开发笔记 > 前端 > 正文

我可以在Silverlight中使用Ninject进行Prism事件聚合吗?

如何解决《我可以在Silverlight中使用Ninject进行Prism事件聚合吗?》经验,为你挑选了1个好方法。

我正在考虑使用Prism在Silverlight 3中做一个项目,我非常喜欢这里显示的事件聚合http://development-guides.silverbaylabs.org/Video/Prism-Eventing

所有的资源似乎都指向使用Unity with Prism而不是Ninject.在Ninject中是否有类似的聚合事件的方式?或者,如果我想使用Prism,我只限于Unity吗?



1> Anderson Ime..:

你在这里很幸运.

Prism中的EventAggregation不是Unity容器的功能,而是Prism自动放入容器中供客户端类使用的东西.所以类声明它们具有IEventAggregator依赖性,并且通过依赖注入将该实例赋予该类.要带走的东西:它是独立的.

所以,你有几个选择.

    如果您不需要Prism的任何其他功能(组件模块化等),您可以简单地使用Ninject并将EventAggregator的实例插入Ninject容器中,以供应用程序的其余部分使用.

    如果您想要Prism的其他功能,可以替换DI容器实现.不幸的是,我无法找到一个具体的例子,但我认为你所要做的就是重新实现基础"UnityBootstrapper"类型与你自己制作的"NinjectBootstrapper".我认为UnityBootrapper是Prism组件(EventAggregator,RegionManager等)与Unity接触的唯一点(特别是在"ConfigureContainer"的实现中). 编辑:我错了.您还必须使用Ninject特定的实现来实现IServiceLocator.不过没什么大不了的.

    拥抱团结.这是一个非常好的DI容器,具有很大的灵活性.它没有Ninject的流畅界面,但它肯定不难使用.

    您可以使用MVVMFoundation(http://mvvmfoundation.codeplex.com)中包含的另一个类似的事件系统.它被称为Messenger,它几乎与EventAggregator在Prism中所做的一样,但是你下载的库要轻得多.

希望这是你的足够选择!

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有