zoukankan      html  css  js  c++  java
  • TypeC一个微软开发的超简单.NET依赖注入/IoC容器

    控制反转(IoC,Inversion of Control)是由Martin Fowler总结出来的一种设计模式,用来减少代码间的耦合。一般而言,控制反转分为依赖注入(Dependency Injection)和依赖查找(Dependency Lookup)。大家用的更多的是依赖注入。

    提供控制反转能力的框架通常也称之为IoC容器。在.NET世界中有各种各样的IoC容器,比较著名的就是来源于微软企业库(Enterprise Library)中的Unity,.NET中内置的扩展框架Managed Extensibility Framework(MEF)也可用于IoC,第三方开源的Autofac、Ninject、StructureMap也比较常用。顺带提一下,在ASP.NET 5中已经直接内置了一种依赖注入机制,也可以配置外部的IoC容器。

    上面提到的IoC容器功能都很强大,但是有时候我们只需要一个轻量级的简单容器来做一些简单的事情(比如测试的时候使用)。所以,今天要介绍的是由微软员工Hanuk开源到Github上的一个超简单的IoC容器——TypeC。

    TypeC除了可以解析接口或抽象基类到具体类外,还为实例类型实现了工厂方法。由于它实现的是单例模式,所以在一个AppDomain中只会存在一个容器实例。要使用非常简单:

    //during the startup 
    TypeContainer typeC = TypeContainer.Instance;
    typeC.Register<IList<string>, List<string>>();
    
    //deep inside the layers of the code
    var list = typeC.GetInstance<IList<string>>();
    list.Add("test");

    除了用代码来显式添加映射外,也支持从配置文件中加载映射。如:

    //during the startup
    string fileName = "TypeConfig.xml";
    TypeContainer tc = TypeContainer.Instance;
    tc.Reset();
    //the Load(fileName) will fail if types can't be resolved 
    tc.Load(fileName);

    具体映射编写方式,可以“阅读原文”来查看。同时也可以访问原文提到的源代码链接,来学习如何开发一个IoC容器。

    原文地址:http://blogs.msdn.com/b/hanuk/archive/2015/03/28/typec-a-simple-net-injection-ioc-container.aspx

  • 相关阅读:
    volley框架使用
    Insert Interval
    candy(贪心)
    Best Time to Buy and Sell Stock
    Best Time to Buy and Sell Stock III
    distinct subsequences
    edit distance(编辑距离,两个字符串之间相似性的问题)
    trapping rain water
    word break II(单词切分)
    sudoku solver(数独)
  • 原文地址:https://www.cnblogs.com/redmoon/p/4439967.html
Copyright © 2011-2022 走看看