zoukankan      html  css  js  c++  java
  • 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

     

     

  • 相关阅读:
    beta冲刺(6/7)
    beta冲刺(5/7)
    beta冲刺(4/7)
    beta(3/7)
    beta冲刺(2/7)
    beta冲刺(1/7)
    团队项目测评博客
    东华理工18级计科五班团队作业六
    东华理工18级计科五班团队作业五
    东华理工18级计科五班团队作业四
  • 原文地址:https://www.cnblogs.com/sunnyblogs/p/3132428.html
Copyright © 2011-2022 走看看