zoukankan      html  css  js  c++  java
  • 轻量级IOC框架:Ninject

    Ninject通过NinjectModule来配置依赖注入(不知道有没有文件配置,在官方教程里没找到相关资料),这里自定义自己的Module:

    internal class MyModule : Ninject.Modules.NinjectModule 
    { 
      public override void Load() 
      { 
        Bind<ILogger>().To<FlatFileLogger>(); 
        Bind<ILogger>().To<DatabaseLogger>(); 
      } 
    }

      具体调用方法:

    private static IKernel kernel = new StandardKernel(new MyModule()); 
    static void Main(string[] args) 
    { 
      ILogger logger = kernel.Get<ILogger>(); 
      logger.Write("Bruce Say: Hello Ninject!"); 
      Console.WriteLine("continues.."); 
      Console.Read(); 
    }

      通过 kernel.Get<ILogger>() 来获取ILogger的实例,之前在MyModule里先后对ILogger 绑定了FlatFileLogger 和 DatabaseLogger,而kernel.Get<ILogger>() 这里返回第一个绑定的对象,即FlatFileLogger。

      构造函数注入

      这里新建一个ITester 和 IocTester, 而IocTester 依赖于ILogger:

    interface ITester 
    { 
      void Test(); 
    } 
    class IocTester:ITester 
    { 
      private ILogger _logger; 
      public IocTester(ILogger logger) 
      { 
        _logger = logger; 
      } 
      public void Test() 
      { 
        _logger.Write("Bruce Say: Hello Ninject!"); 
      } 
    }

      下面看看Ninject是怎么配置的,很简单修改MyModule,绑定ITester:Bind<ITester>().To<IocTester>():

    internal class MyModule : Ninject.Modules.NinjectModule 
    { 
      public override void Load() 
      { 
        Bind<ILogger>().To<FlatFileLogger>(); 
        Bind<ITester>().To<IocTester>(); 
      } 
    }

      从以上配置中,我们是看不到IocTester 和ILogger 是有依赖关系的,这就是依赖注入的好处。只是简单告诉哪个接口对应哪个类,剩下的任务就可以交给Ninject来处理了。

    private static IKernel kernel = new StandardKernel(new MyModule()); 
    static void Main(string[] args) 
    { 
      ITester tester = kernel.Get<ITester>(); 
      tester.Test(); 
      Console.WriteLine("continues.."); 
      Console.Read(); 
    }

    原创文字只代表本人某一时间内的观点或结论,本人不对涉及到的任何代码担保。转载请标明出处!

  • 相关阅读:
    CentOS + java
    在 Centos7 用Jexus服务器 运行.Net Core 只需几部
    dotnet core 开发中遇到的问题
    Scratch3.0设计的插件系统(上篇)
    ASP.NET的编译原理
    搭建git服务器
    ubuntu安装Pillow
    MIT线性代数课程总结与理解-第三部分
    关于在ubuntu系统下显卡为goforce1060安装tensorflow(gpu)
    关于Clion中添加makefile相关参数
  • 原文地址:https://www.cnblogs.com/leleroyn/p/1892762.html
Copyright © 2011-2022 走看看