标签:
控制反转(Inversion of Control,英文缩写为IoC)是一个重要的面向对象编程的法则来削减计算机程序的耦合问题,也是轻量级的Spring框架的核心。 控制反转一般分为两种类型,依赖注入(Dependency Injection,简称DI)和依赖查找(Dependency Lookup)。依赖注入应用比较广泛。
IOC模式,系统中通过引入实现了IOC模式的IOC容器,即可由IOC容器来管理对象的生命周期、依赖关系等,从而使得应用程序的配置和依赖性规范与实际的应用程序代码分开。其中一个特点就是通过文本的配置文件进行应用程序组件间相互关系的配置,而不用重新修改并编译具体的代码。
Martin Fowler在那篇著名的文章《Inversion of Control Containers and the Dependency Injection pattern》中将具体依赖注入划分为三种形式,即构造器注入、属性(设置)注入和接口注入,习惯将其划分为一种(类型)匹配和三种注入:
这里讲解.NET的Microsoft.Practices.Unity、Microsoft.Practices.Unity.Configuration和System.ComponentModel.Composition。
1、 首先讲解Microsoft.Practices.Unity讲解,这里不区分是哪一种注入,只为实现功能。
public interface IKiss { string kiss(); } public class Boy : IKiss { public string kiss() { return "boy kissing"; } } public class Lisy : IKiss { public string kiss() { return "Lisy kissing"; } }
//通过直接创建的方式,在main中写 //创建容器 IUnityContainer container = new UnityContainer(); //注册映射 container.RegisterType<IKiss, Boy>(); //得到Boy的实例 var boy = container.Resolve<IKiss>(); Title=boy.kiss();
通过配置调用
///通过配置 IUnityContainer container = new UnityContainer(); UnityConfigurationSection configuration = ConfigurationManager.GetSection(UnityConfigurationSection.SectionName) as UnityConfigurationSection; configuration.Configure(container, "defaultContainer"); var Lisy = container.Resolve<IKiss>("Lisy"); Title = Lisy.kiss();
<configSections> <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection,Microsoft.Practices.Unity.Configuration"/> </configSections> <unity> <containers> <container name="defaultContainer"> <register type="TestDependency.IKiss,TestDependency" name="Boy" mapTo="TestDependency.Boy,TestDependency" /> <register type="TestDependency.IKiss,TestDependency" name="Lisy" mapTo="TestDependency.Lisy,TestDependency" /> </container> </containers> </unity>
标签:
原文地址:http://www.cnblogs.com/zhao123/p/4433980.html