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); 
    }
    }
  • 相关阅读:
    配置伪静态的好处
    RewriteCond和13个mod_rewrite应用举例Apache伪静态
    什么是伪静态?伪静态有何作用?
    推荐16个下载超酷脚本的热门网站
    thinkphp 表单自动验证功能
    窗体界面设计03
    ExtJs双折线图
    课程设计之"网络考试系统"(php、Extjs)
    布局元素和用户控件设计Silverlight网站02
    Silverlight的皮肤转换和datagrid数据显示
  • 原文地址:https://www.cnblogs.com/personblog/p/8436047.html
Copyright © 2011-2022 走看看