2010-06-17 9 views
1

Ce que je suis à la recherche est quelque chose de similaire à ce qui suit (http://github.com/ninject/ninject.web.mvc):Ninject: - (! MVC) ninject.web Comment appliquer une ASP.Net Web régulière

README.markdown

Cette extension permet l'intégration entre le noyau Ninject et les projets ASP.NET MVC. Pour l'utiliser, il suffit de faire votre HttpApplication (généralement en Global.asax.cs) se prolongent NinjectHttpApplication:

public class YourWebApplication: NinjectHttpApplication {public override vide OnApplicationStarted() {
// Ceci n'est nécessaire dans MVC1 RegisterAllControllersIn ("Some.Assembly.Name"); }

public override IKernel CreateKernel() {return new StandardKernel (nouveau UnModule(), nouvelle SomeOtherModule(), ...);

// OR, to automatically load modules: 

var kernel = new StandardKernel(); 
kernel.AutoLoadModules("~/bin"); 
return kernel; } } 

Une fois que vous faites cela, vos contrôleurs seront activés par Ninject, ce qui signifie que vous pouvez exposer les dépendances sur leurs constructeurs (propriétés ou méthodes) pour demander des injections.

Répondre

1

Comme vous na pas la règle dehors dans votre question, je dois supposer que vous n'êtes pas au courant de the WebForms equivalent of the one you cited

(liées à the Ninject extensions index on the home site)

+0

partiellement droite. Je suis conscient de l'extension ninject.web, mais pas comment l'implémenter par exemple sur une application web asp.net existante. –

+0

@No Body: http://davidhayden.com/blog/dave/archive/2008/06/20/ninjectdependencyinjectionaspnetwebpagessample.aspx couvre assez bien - il y a une classe de base pour Global et pour les pages. Y at-il quelque chose qui n'est pas couvert par cela? S'il y a, demandez. –

+0

assez juste mais enfin, hayden utilise Ninject.Framework.Web est-ce la même chose que le nouveau ninject.web? –

2

Je veux juste partager comment ai-je résolu à l'aide de Visual Studio 2008

Pour ceux d'entre vous qui ont été à www.tekpub.com code ci-dessous est un peu familier, oui! votre code correct ci-dessous est de Mastering ASP.NET MVC 2.0 série, et une démonstration de l'utilisation NLog

Needed Référence:

  • Ninject.dll
  • Ninject.Web
  • NLog
  • .dll

Global.asax:

<%@ Application Language="C#" Inherits ="Ninject.Web.NinjectHttpApplication" %> 
<%@ Import Namespace="App_Code.Infrastructure.Logging"%> 
<%@ Import Namespace="Ninject.Modules"%> 
<%@ Import Namespace="Ninject"%> 

<script runat="server"> 

    void Application_Start(object sender, EventArgs e) 
    { 
     // Code that runs on application startup 

    } 

    void Application_End(object sender, EventArgs e) 
    { 
     // Code that runs on application shutdown 

    } 

    void Application_Error(object sender, EventArgs e) 
    { 
     // Code that runs when an unhandled error occurs 

    } 

    void Session_Start(object sender, EventArgs e) 
    { 
     // Code that runs when a new session is started 
    } 

    void Session_End(object sender, EventArgs e) 
    { 
     // Code that runs when a session ends. 
     // Note: The Session_End event is raised only when the sessionstate mode 
     // is set to InProc in the Web.config file. If session mode is set to StateServer 
     // or SQLServer, the event is not raised. 

    } 


    protected override void OnApplicationStarted() 
    { 
     //base.OnApplicationStarted(); 

     Container.Get<ILogger>().Info("Application Started"); 
    } 

    protected override IKernel CreateKernel() 
    { 
     return Container; 
    } 

    static IKernel Container 
    { 
     get 
     { 
      return new StandardKernel(new SiteModule()); 
     } 

    } 

    class SiteModule : NinjectModule 
    { 
     public override void Load() 
     { 
      Bind<ILogger>().To<NLogger>().InSingletonScope(); 
     } 
    } 

</script>