zoukankan      html  css  js  c++  java
  • 在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;
      }
  • 相关阅读:
    2016/4/27 xml
    2016/4/27 网络编程
    2016/4/25 java io
    mysql 基础列题
    数据库的语法
    数据库
    io流
    xml
    网络编程
    gui2
  • 原文地址:https://www.cnblogs.com/miskis/p/6677994.html
Copyright © 2011-2022 走看看