zoukankan      html  css  js  c++  java
  • MVC中使用Ninject依赖注入

            在.NET MVC中使用Ninject注入,主要分为以下几步:

    1. 使用NuGet包添加Ninject引用,我添加的是目前最新版本3.34
    2. 在App_Start文件夹下,创建NinjectControllerFactory类
    3. 在Global中添加如下代码
    4. 项目中主要使用的是接口注入,可参考Iuser调用例子
     public class NinjectControllerFactory: DefaultControllerFactory
        {
            private IKernel Kernel;
            public NinjectControllerFactory()
            {
                Kernel = new StandardKernel();
                AddBindings();
            }
    
            protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
            {
                return controllerType == null ? null : (IController)Kernel.Get(controllerType);
            }
     
            private void AddBindings()
            {
                Kernel.Bind<IUser>().To<User>();
              
            }
            public object GetService(Type serviceType)
            {
                return this.Kernel.TryGet(serviceType);
            }
    
            public IEnumerable<object> GetServices(Type serviceType)
            {
                return this.Kernel.GetAll(serviceType);
            }
        }
      protected void Application_Start()
            {
                log4net.Config.XmlConfigurator.Configure();
                //设置Controller工厂
                ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory());
                AreaRegistration.RegisterAllAreas();
                FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
                RouteConfig.RegisterRoutes(RouteTable.Routes);
                BundleConfig.RegisterBundles(BundleTable.Bundles);
            }
    public class HomeController : Controller
        {
            [Ninject.Inject]
            public IUser user { get; set; }
    
            [AllowLogin]
            public ActionResult Login(string UserName,string UserPwd)
            {
               var userModel = user.GetByLogin(UserName,UserPwd); 
    }
    }
  • 相关阅读:
    Matplotlib
    Numpy&Pandas
    莫凡《机器学习》笔记
    李宏毅《1天搞懂深度学习》笔记
    Git客户端使用教程
    像素级压缩感知图像融合的论文
    二分图【洛谷P2175】 小Z的游戏分队
    模板【洛谷P3390】 【模板】矩阵快速幂
    模板 可并堆【洛谷P3377】 【模板】左偏树(可并堆)
    LCA SP913 QTREE2
  • 原文地址:https://www.cnblogs.com/personblog/p/8436047.html
Copyright © 2011-2022 走看看