1

我一直在使用这个博客示例:

http://blog.longle.net/2012/03/29/building-a-composite-mvc3-application-with-pluggable-areas/

我的解决方案中有一些概念。但是,我正在尝试找出一种仅在用户有权访问模块/区域时才将绑定添加到内核的好方法。

我已经阅读了一些关于 ServiceLocator 的内容,但我试图远离它。

我试图让事情正常工作的一件事是在模块的默认构造函数中注入用户构造函数。它正在工作,但它是一个黑客。

我正在使用的模式,您创建的每个模块项目都创建一个继承自 AreaRegistion 的类。每个模块项目构建时,相关文件都会复制到主 Web 项目的 Areas 文件夹中。然后在加载主项目时,使用反射来加载所有模块程序集。然后当调用AreaRegistration.RegisterAllAreas() 时,它会检测并加载所有具有继承AreaRegistration 的类的模块。

我想找到一种访问 Ninject 内核并在继承自 AreaRegistration 的模块类中添加绑定的好方法。我会想象启动代码以从 RegisterArea() 覆盖添加绑定。

我正在寻找有关如何在不求助于 ServiceLocator 的情况下执行此操作的任何建议。

任何想法将不胜感激。

4

1 回答 1

0

现在我找到了一个更好的解决方案,那就是使用 NinjectModule。在 Plugin 类中,我将创建一个继承自 NinjectModule 的类。然后在 Load 重载中设置插件绑定。

然后在我的主应用程序引导程序中使用 Kernel.Load 来初始化从 NinjectModule 继承的所有插件类中的 Load 重载。

于 2015-01-02T02:25:07.150 回答