我试图让Ninject使用已经有自定义PageBase对象的WebForms应用程序。但是,我不确定我是否可以将Ninject的PageBase对象与另一个自定义PageBase一起使用。我一直在寻找一段时间,看看我是否能找到这个问题的答案,或者学习如何去做,但我发现的就是:
我使用共享基类将一个替代方法一起攻击 来自Page。它看起来大致像这样
public abstract class PageBase : Page { public IKernel Kernel { get; private set; } public PageBase() { Kernel = ...; } public void Page_Init() { Kernel.Inject(this); } }
这将允许您在任何页面上进行属性和方法注入 继承自PageBase。请注意,构造函数不完整 - 你必须以某种静态的方式访问内核。你应该 能够以某种方式从HttpApplication读取它。
(来源:http://groups.google.com/group/ninject/browse_thread/thread/317fc48387399aa6,从Ninject with ASP.Net webforms and MVC链接):
这似乎对我有用,因为看起来我可以将此代码应用于现有的自定义PageBase。但是,我对作者所说的部分感到困惑,“......构造函数不完整 - 你必须以某种静态的方式访问内核。”
有没有人知道这句话意味着什么,以及如何以静态方式访问Ninject内核?
答案 0 :(得分:4)
您无需从Ninject页面派生。您也可以使用NinjectHttpModule。
https://github.com/ninject/ninject.web/blob/master/src/Ninject.Web/NinjectHttpModule.cs