Ninject与ASP.Net webforms和MVC
我想在一个结合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类,您可以使属性和方法注入成为可能(来自Nate Kohari在Ninject邮件列表中的答案):
public abstract class PageBase : Page
{
public IKernel Kernel { get; private set; }
public PageBase() { Kernel = ...; }
public void Page_Init() { Kernel.Inject(this); }
}
1)看看Mvc和非Mvc Ninject扩展的源代码 - 代码非常简短,整洁
2)转到ninject邮件列表并提出这个问题,以及你从源头上学到的东西。 会有一个答案或补丁快速闪电
这里有一些非常好的资源,介绍如何在我之前收藏的webforms中使用DI:
http://aspnetresources.com/articles/ioc_and_di_with_web_forms http://aspnetresources.com/articles/real_world_ioc_and_di_with_webforms
希望这可以帮助。
链接地址: http://www.djcxy.com/p/46621.html