• 在MVC5中使用Ninject 依赖注入


    各大主流.Net的IOC框架性能测试比较 :

    http://www.cnblogs.com/liping13599168/archive/2011/07/17/2108734.html

    使用NuGet下载安装 Ninject,确认引用服务中存在 Ninject

    在项目中新建 NinjectControllerFactory.cs 类

    using BooksStore.Domain.Service.Book;
    using BooksStore.Domain.Service.impl;
    using Ninject;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using System.Web.Routing;
    
    namespace BooksStore.WebUI.Infrastructure
    {
        public class NinjectControllerFactory:DefaultControllerFactory
        {
            private readonly IKernel _kernel;
    
            public NinjectControllerFactory()
            {
                _kernel = new StandardKernel();
                AddBindings();
            }
    
            protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
            {
                return controllerType == null
                    ? null
                    : (IController)_kernel.Get(controllerType);
            }
    
            /// <summary>
            /// 添加绑定
            /// </summary>
            private void AddBindings()
            {
                //绑定接口和实现类
                _kernel.Bind<IBookService>().To<BookService>();
            }
        }
    }
    修改默认控制器工厂

    在Global.asax 注册 这个容器

    using BooksStore.WebUI.Infrastructure;
    using System.Web.Mvc;
    using System.Web.Routing;
    
    namespace BooksStore.WebUI
    {
        public class MvcApplication : System.Web.HttpApplication
        {
            protected void Application_Start()
            {
                AreaRegistration.RegisterAllAreas();
                RouteConfig.RegisterRoutes(RouteTable.Routes);
                //注册Ninject容器
                ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory());
    
            }
        }
    } 

    在控制器中调用接口 使用Ninject依赖注入 就能正常调用接口

     [Ninject.Inject]
     public IBookService _IBookService { set; get; }

     使用构造函数注入

      private IBookService _bookService;
      public BookController(IBookService bookService)
      {
        _bookService = bookService;
      }
  • 相关阅读:
    老男孩九期全栈Python之基础一
    为善如挽逆水之舟,才放手便下流
    对自己的表现打分
    anki
    解决推送数据平台
    己所独知,尽是方便;人所不见,尽是自由
    常与权
    为什么会一直刷视频而停不下来
    准备换个房子
    UDEC 1
  • 原文地址:https://www.cnblogs.com/miskis/p/6677994.html
Copyright © 2020-2023  润新知