如何将Ninject.Web.PageBase与另一个自定义.NET PageBase一起使用

时间:2011-08-04 01:50:07

标签: asp.net dependency-injection ninject-2

我试图让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内核?

1 个答案:

答案 0 :(得分:4)

您无需从Ninject页面派生。您也可以使用NinjectHttpModule。

https://github.com/ninject/ninject.web/blob/master/src/Ninject.Web/NinjectHttpModule.cs