IOC(通过配置文件实现类的加载)

1 什么是IOC

  Ioc  全称:Inversion of Control (英文缩写为IoC)中文名称为 控制反转,也叫依赖注入(Dependency Injection)。所谓的控制反转的意思是依赖对象(控制权)发生转变,由最初的当前类本身来管理的依赖对象转变为IoC框架来管理这些对象,使得依赖脱离类本身的控制,从而实现低耦合

2 通过配置文件实现IOC机制

    1 创建项目什么的我就不多说了,咱们直接进入正题,首先我们需要构建一个接口ISpiocDao(类也可以本文只是个简单的演示示   

 

         interface ISpiocDao

 {
      string Name { get; set; }
     void Write();

}  接口中提供一个现实名称 的属性Name 和 一个数据输出函数Write();

2 添加类 SpiocDao 该类作为接口ISpiocDao的实现类

public class SpiocDao : System.Configuration.ConfigurationSection ,ISpiocDao  
{
[System.Configuration.ConfigurationProperty("Name", IsRequired=true)]  
public string Name {
get {
return this["Name"].ToString();
}
set {
this["Name"] = value;
}
}  
public void Write()
{
  Console.WriteLine("I am is come from ISpioDao");
}
}

首先对于SpiocDao 我们是需要在配置文件中添加属性Name的配置所以该类需要继承System.Configuration.ConfigurationSection 类同时也需要继承我们上面所定义的接口ISpiocDao

注意了:我们平时操作属性访问属性是this.Name 而本文中的属性方位为什么是 this["Name"]这样的形式呢,如果你在细心的阅读本文时你会发现我们的Name属性是需要在配置文件中配置的所以我们的Name属性需要标记为ConfigurationProperty(表示该属性为配置依赖属性),对于配置文件中配置依赖属性的操作详细信息可以查阅 System.Configuration.ConfigurationSection(该类提供了配置文件中的依赖属性的访问)

3 开始我们的配置文件配置

    添加配置文件,对于.net配置文件加载机制,在此不多详细说明,具体的你可以查阅msdn

    配置需要实例化的类 <section name="SpioDao" type="SpIOC.SpiocDao,SpIOC"/>  name配置名称这个name我们在加载类时是会用到的切记命名是不要重名 type逗号的前部分为该类的全名称,后面为我们当前程序集名称 之后配置该类的属性<SpioDao Name="this is come from app.config"> </SpioDao>

详细的配置信息如下

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="SpioDao" type="SpIOC.SpiocDao,SpIOC"/>
</configSections>
<SpioDao Name="this is come from app.config">
</SpioDao>
</configuration>

public static string congfigSecName = "SpioDao";
static void Main(string[] args)
{

var classConfig = System.Configuration.ConfigurationManager.GetSection(congfigSecName);
ISpiocDao ispioc = classConfig as ISpiocDao;
if (ispioc == null)
{
Console.WriteLine("the config is error");
}
else
{
ispioc.Write();
Console.WriteLine(ispioc.Name);
}
Console.Read();
}

至此一个简单代码的实现了通过配置文件加载类

  附录:源码地址:https://files.cnblogs.com/sunnyblogs/SpIOC.zip

 

 

 

posted @ 2013-06-12 09:26  SunnyMan  阅读(1412)  评论(2编辑  收藏  举报