我想在一个结合了 ASP.Net webforms 和 ASP.Net MVC 的项目中使用 Ninject。我正在使用 Ninject 2,但是当我使用 Ninject.Web.Mvc 中的 NinjectHttpApplication 时,当我使用诸如未创建内核的 PageBase 之类的东西时,它会提示。
我在 Global.asax 中有以下内容,但不确定要添加什么。
public class MvcApplication : Ninject.Web.Mvc.NinjectHttpApplication
{
protected override void OnApplicationStarted()
{
AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
RegisterAllControllersIn(Assembly.GetExecutingAssembly());
}
protected override Ninject.IKernel CreateKernel()
{
return new StandardKernel(new ServiceModule());
}
}
有人在某个地方有这个工作可以分享一些想法或代码吗?
最佳答案
正如 Ruben 所说,我在 Ninject 邮件列表中发布了一条消息:
http://groups.google.com/group/ninject/browse_thread/thread/317fc48387399aa6
简而言之,不幸的是,这实际上是不可能的。但是,使用自定义 PageBase 类,您可以使属性和方法注入(inject)成为可能(来自 Nate Kohari 在 Ninject Mailing List 中的回答):
public abstract class PageBase : Page
{
public IKernel Kernel { get; private set; }
public PageBase() { Kernel = ...; }
public void Page_Init() { Kernel.Inject(this); }
}
关于asp.net - Ninject 与 ASP.Net 网络表单和 MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3141330/