当前位置:首页 > 商讯 >

.Net下实现可扩展的编程方法简述

编辑:北京聚贤贵都宾馆有限公司时间:2017-09-09 10:30:05阅读次数:2
.Net下实现可扩展的编程方法简述

IoC控制反转(Inversion of Control,英文缩写为IoC)是一个重要的面向对象编程的法则用来解决系统耦合问题。 控制反转还有一个名字叫做依赖注入(DI:Dependency Injection)。IoC中最基本的技术就是interface + reflection,“反射(Reflection)”编程。 。" IoC 容器的职责是对象的创建,核心是对象的生命周期管理(何时创建/怎么创建/何时销毁),就像一个大工厂,对象“托管”在里面。模式的源头都是 SOLID(面向对象的原则)。利用IOC 解耦的核心是:面向抽象,而非实现。即我们只需要关注某一个对象能做什么,怎么用;不需要关注它怎么来,更不需要我们来管理它。
1,Unity
Unity是Enterprise Library 4.0开始加入的一个轻量级的、可扩展的依赖注入容器。
Unity模块包括了下面的特点
?  提供了一个创建对象,以及依赖的对象的方法
?  提供的RegisterType方法用来在容器中注册类型和映射,Resolve方法可以返回任何依赖对象的实例。
?  提供控制反转IOC功能,通过预先配置注入类的对象来实现。你可以在构造函数中指明一个类或者接口(构造函数注入),或者是使用attribute的属性注入,和方法调用注入。
?  支持容器继承,容器可以有子容器,支持对象从子容器传递到父容器中。
?  可以从标准的配置文件中读取信息,例如xml文件
?  在运行时可以配置和改变依赖关系。
?  对类的定义没有任何要求。在类上不需要添加attribute(除非使用属性注入或者是方法调用注入),在类声明中没有任何限制。
?  支持自定义容器,例如,你可以在方法中实现额外的对象构造,和容器功能,例如容器的缓存功能。

三种注入方式:
?构造器注入(Constructor Injection):IoC容器会智能地选择选择和调用适合的构造函数以创建依赖的对象。如果被选择的构造函数具有相应的参数,IoC容器在调用构造函数之前会自定义创建相应参数对象;
?属性注入(Property Injection):如果需要使用到被依赖对象的某个属性,在被依赖对象被创建之后,IoC容器会自动初始化该属性;
? 方法注入(Method Injection):如果被依赖对象需要调用某个方法进行相应的初始化,在该对象创建之后,IoC容器会自动调用该方法。

定义一个接口:

public interface ILogger { void Write(string message); }

实现接口用来扩展应用程序:

public class FlatFileLogger : ILogger { public void Write(string message) { Console.WriteLine(String.Format("Message:{0}", message)); Console.WriteLine("Target:FlatFile"); } }

主程序:

class Program { static void Main(string[] args) { ILogger logger = GetLogger(); logger.Write("Test"); System.Console.ReadLine(); } /// /// 加载日志处理对象 /// /// public static ILogger GetLogger() { //初始化一个容器 IUnityContainer container = new UnityContainer(); //获取unity配置 UnityConfigurationSection config = ConfigurationManager.GetSection("unity") as UnityConfigurationSection; UnityConfigurationSection.CurrentSection.Configure(container); //向容器中注册对象 ILogger defaultLogger = container.Resolve("Logger"); return defaultLogger; } }

扩展配置:

2,Spring.NET
Spring.NET是一个应用程序框架,其目的是协助开发人员创建企业级的.NET应用程序。它提供了很多方面的功能,比如依赖注入、面向方面编程(AOP)、数据访问抽象及ASP.NET扩展等等。 Spring.NET的IoC容器所解决的,正是如何在企业应用中将类、对象和服务组合成应用程序的问题。IoC容器将分散的组件组合成完整的应用程序。 。Spring.Core的基础是IObjectFactory接口,该接口用一个简单而优雅的方式实现了工厂模式,使我们可以无需自行编写singleton类型和众多的服务定位器,并允许将对象配置及其依赖关系与具体的程序逻辑解耦。该模块中的IApplicationContext接口是IObjectFactory的扩展,增加了诸多企业级功能,包括使用资源文件进行文本本地化、事件传播和资源装载等等。
定义一个接口:

public interface ILogger { void Write(string message); }

实现接口:

public class FileLogger : ILogger { public void Write(string message) { Console.WriteLine(String.Format("Message:{0}", message)); Console.WriteLine("Target:File"); } }

主程序:

static void Main(string[] args) { //初始化容器 IApplicationContext context = ContextRegistry.GetContext(); //获取容器中的对象 ILogger Logger = context.GetObject("Logger") as ILogger; Logger.Write("Test"); Console.ReadLine(); }

系统配置:

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:鄂州SEO http://ezhou.raoyu.net

上一篇:浅析网站site首页不在第一的原因 下一篇:最后一页

相关阅读