• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

单系统多类型数据源随意切换的c#实现

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

【原创作者】:丛兴滋(cncxz)[E-mail:[email protected]]
【关 键 词】:SQL  XML  Access  C#  切换

    假设你要做个会员管理系统,分为SQL、XML和Access三种版本,希望通过修改配置文件中一个参数来完成版本切换,而目前你又对这种切换的实现存有疑惑,建议你继续阅读,本文说明了“一个接口、三个实现、一个代理类结合配置文件实现SQL、XML、Access数据源切换”的一种方法。

下面以会员管理系统的单位管理为例,说一下这种方法:

1、首先定义一个接口IDeptManage,代码如下:

//接口IDeptManage
public interface IDeptManage{

 void ItemCreate(string strGuid,string strShortName,string strFullName,string strParentGuid);

 void ItemRemove(string strGuid);

 void ItemUpdate(string strGuid,string strShortName,string strFullName);

 string test();//测试用
}

2、然后写三个互相独立的实现类,DeptManage_Sql、DeptManage_Xml、DeptManage_Access,代码如下:

//类DeptManage_Sql,用SQL的实现
public class DeptManage_Sql:IDeptManage
 {
  public void ItemCreate(string strGuid,string strShortName,string strFullName,string strParentGuid){

  }
  public void ItemRemove(string strGuid){

  }
  public void ItemUpdate(string strGuid,string strShortName,string strFullName){

  }

  public string test()
  {
   return "这个是用SQL实现的";
  }

 }

//类DeptManage_Xml,用XML的实现
public class DeptManage_Xml:IDeptManage
 {
  public void ItemCreate(string strGuid,string strShortName,string strFullName,string strParentGuid){

  }
  public void ItemRemove(string strGuid){

  }
  public void ItemUpdate(string strGuid,string strShortName,string strFullName){

  }

  public string test()
  {
   return "这个是用XML实现的";
  }

 }

//类DeptManage_Access,用Access的实现
public class DeptManage_Access:IDeptManage
 {
  public void ItemCreate(string strGuid,string strShortName,string strFullName,string strParentGuid){

  }
  public void ItemRemove(string strGuid){

  }
  public void ItemUpdate(string strGuid,string strShortName,string strFullName){

  }

  public string test()
  {
   return "这个是用Access实现的";
  }

 }

以前的时候,都是用 IDeptManage myClass=new DeptManage_Sql()跟IDeptManage myClass=new DeptManage_Xml()来实现调用,这在使用中似乎也没有什么不妥,可是一旦需要切换(假设要把Sql的换成Xml),就麻烦了,需要到处修改代码,现在我要做的就是把这些在切换时需要调整的部分集中起来,达到简单地调整一处代码就完成切换工作的目的。

3、其实实现起来非常简单,只要在调用者和调用源中间补上一个中介人实现解耦就可以了,这里定义一个名为Agent的代理类,代码如下:

public class Agent
 {
  static int DataType=0;  //数据库类型[0为SQL、1为XML、2为Access]

  public static IDeptManage CreateDeptMange(){
   IDeptManage myClass;
   switch (DataType){
    case 0:
     myClass=new DeptManage_Sql();
     break;
    case 1:
     myClass=new DeptManage_Xml();
     break;

    case 2:
     myClass=new DeptManage_Access();
     break;
    default:
     myClass=new DeptManage_Sql();
     break;
   }
   return myClass;
  }

 }

以后调用的时候改用IDeptManage myManage= Agent.CreateDeptMange()就可以了,想切换的时候修改Agent类中的DataType即可。


修改DataType值,通过调用 myManage.test()可以查看当前使用的哪个实现类,把Agent类调整一下,从web.config里读DataType值,最终就通过一个接口、三个实现、一个代理类结合配置文件实现了SQL、XML、Access数据源的切换,这里不写了,你自己来吧    :)

另外,文章发布可能会有修改的地方,blog上是最新的。



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=526057


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#ftp发布时间:2022-07-10
下一篇:
使用Mutex实现程序单实例运行(c#)发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap