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(); 
    }

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

  • 相关阅读:
    android中接口和抽象类的区别
    最靠谱的禁止ViewPager滑动方法
    Android Studio 自定义属性,命名空间
    代码设置Android EditText的相关问题。输入长度maxLength
    关于Android中,保留小数点后两位的方式
    Android的线程使用来更新UI----Thread、Handler、Looper、TimerTask等
    既然安卓免费,那 Google 是靠什么赚钱的?
    android viewconfiguration
    Android中实现为TextView添加多个可点击的文本
    Textview解析带图片的html示例
  • 原文地址:https://www.cnblogs.com/leleroyn/p/1892762.html
Copyright © 2011-2022 走看看