zoukankan      html  css  js  c++  java
  • MVC4中使用Ninject

    MVC4中使用Ninject

    1.NuGet获取Ninject.dll

    .NET技术交流群 199281001 .欢迎加入。

    2.全局注册  Global.asax.cs

     RegisterNinject
    //注册Ninject依赖注入全局解析器
    2  GlobalConfiguration.Configuration.DependencyResolver = new System.Web.Http.Dependencies.NinjectDependencyResolver(new Ninject.StandardKernel());

    3.辅助类

     NinjectDependencyResolver
    1 using BLL;
     2 using IBLL;
     3 using Ninject;
     4 using System.Web.Http.Dependencies;
     5 
     6 namespace System.Web.Http.Dependencies
     7 {
     8     //Author:GaoBingBing
     9     public class NinjectDependencyResolver : NinjectDependencyScope, IDependencyResolver
    10     {
    11         [Ninject.Inject]
    12         private IKernel kernel;
    13         public NinjectDependencyResolver()
    14         {
    15             
    16         }
    17         public NinjectDependencyResolver(IKernel kernel)
    18         {
    19             this.kernel = kernel;
    20             this.kernel.Settings.InjectNonPublic = true;
    21             this.AddBinds();
    22         }
    23 
    24         private void AddBinds()
    25         {
    26              
    27             //由此添加你的注入
    28             this.kernel.Bind<IXX>().To<XX>();
    29          }
    30         //开始处理
    31         public IDependencyScope BeginScope()
    32         {
    33             return new NinjectDependencyScope(this.kernel.BeginBlock());
    34         }
    35 
    36 
    37 
    38     }
    39 }
     NinjectDependencyScope

    using Ninject.Activation;
    using Ninject.Parameters;
    using Ninject.Syntax;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web.Http.Dependencies;

    namespace System.Web.Http.Dependencies
    {
    //Author:GaoBingBing
    public class NinjectDependencyScope : IDependencyScope
    {
    protected IResolutionRoot resolutionRoot;
    public NinjectDependencyScope()
    {

    }
    public NinjectDependencyScope(IResolutionRoot resolutionRoot)
    {
    this.resolutionRoot = resolutionRoot;
    }
    public object GetService(Type serviceType)
    {
    return resolutionRoot.Resolve(this.CreateRequest(serviceType)).SingleOrDefault();
    }

    public IEnumerable<object> GetServices(Type serviceType)
    {
    return this.resolutionRoot.Resolve(this.CreateRequest(serviceType));
    }
    private IRequest CreateRequest(Type serviceType)
    {
    return resolutionRoot.CreateRequest(serviceType, null, new Parameter[0], true, true);
    }
    public void Dispose()
    {
    this.resolutionRoot = null;
    }
    }
    }

    NinjectDependencyScope

    4.Config

     DIConfig

    //Author:GaoBingBing
    public class DIConfig
    {
    public static T CreateInstance<T>() where T : class
    {
    System.Web.Http.Dependencies.IDependencyResolver resolver = System.Web.Http.GlobalConfiguration.Configuration.DependencyResolver;
    return resolver.BeginScope().GetService(typeof(T)) as T;
    }

    }

    DIConfig


    5.调用

    private IXX   _x=DIConfig.CreateInstance<IXX>();



    6.谢谢关注

     
     
    分类: ASP.NETASP.NET MVC 4C#IOC
  • 相关阅读:
    盘点黑客攻击途径:最常用的7个策略及简单的防护方法
    python 小技巧
    vi 使用方法
    Mac下添加环境变量(一劳永逸)
    增强for循环
    十大排序算法
    java中break、continue、return作用
    Mac zsh中所有命令失效
    Mac 每次都要执行source ~/.bash_profile 后,配置的环境变量才生效
    Mac下添加环境变量
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3858316.html
Copyright © 2011-2022 走看看