2010-06-29 15 views
7

Ich möchte Ninject in einem Projekt verwenden, das ASP.Net Webforms und ASP.Net MVC kombiniert. Ich benutze Ninject 2, aber wenn ich NinjectHttpApplication von Ninject.Web.Mvc verwende, beschwert es sich, wenn ich etwas wie eine PageBase verwende, dass der Kernel nicht erstellt wird.Ninject mit ASP.Net Webforms und MVC

Ich habe das folgende in der Global.asax und bin mir nicht sicher, was ich hinzufügen soll.

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()); 
    } 
} 

Hat jemand diese Arbeit irgendwo, wer könnte einige Gedanken oder Code auf diesem teilen?

Antwort

2

Als Ruben gesagt, ich habe eine Nachricht auf der Ninject Mailing-Liste setzen:

http://groups.google.com/group/ninject/browse_thread/thread/317fc48387399aa6

Die Antwort kurz ist, ist es leider isn Das ist wirklich möglich. Allerdings mit einer benutzerdefinierten PageBase Klasse können Sie Eigenschaften und Methoden Injektion möglich machen (von Nate Kohari Antwort in der Ninject Mailing-Liste):

public abstract class PageBase : Page 
{ 
    public IKernel Kernel { get; private set; } 
    public PageBase() { Kernel = ...; } 
    public void Page_Init() { Kernel.Inject(this); } 
} 
1

1) in der Quelle Werfen Sie einen Blick sowohl für die Mvc und nicht-Mvc Ninject Erweiterungen - der Code ist sehr kurz und ordentlich

2) Gehen Sie auf die ninject Mailing-Liste und stellt diese Frage, zusammen mit dem, was Du hast von der Quelle gelernt. Es wird eine Antwort oder ein Patch seines blitzschneller

+0

Vielen Dank für Ihre Antwort. Ich habe 1, und versuchte, die zwei HttpApplications zu einem zu kombinieren. Aber das fühlt sich nicht richtig an. Ich habe eine Nachricht auf die Ninject Mailing-Liste geschrieben und werde Sie wissen lassen, wenn ich eine nützliche Antwort bekomme. –