欢迎来到飞鸟慕鱼博客,开始您的技术之旅!
当前位置: 首页知识笔记正文

-数据层的反射工厂模式

墨初 知识笔记 75阅读

在IssueTracker项目中,用户可以选择使用Access数据库或SQL Server。通过Web.config文件中的add key=' data access type ' value=' aspnet . starter kit . issue tracker . data access layer . sqldataaccesslayer '/进行配置。如何实现这个功能,本项目采用的是反射工厂模式。一般来说,反射就是编译的时候,不知道会生成什么对象。根据配置内容,在运行时生成相应的对象。在项目中的实现如下:首先在code/dal/DataAccessLayer.cs中定义抽象类DataAccessLayerBaseClass,在这个类中定义所有用于数据操作的抽象方法。AccessDataAccessLayer.cs和SqlDataAccessLayer.cs继承DataAccessLayerBaseClass实现Access和SQL。

family: 'Times New Roman'">数据库的数据操作。

">-font-family: 'Times New Roman'">在Code/DAL/DataAccessLayer.cs">-font-family: 'Times New Roman'">的

 1public  class DataAccessLayerBaseClassHelper 
 2{
 3        public static DataAccessLayerBaseClass GetDataAccessLayer() 
 4           {
 5            Type trp = 
 6                Type.GetType(Globals.DataAccessType, true);
 7            // Throw an error if wrong base type
 8            if (trp.BaseType != 
 9                Type.GetType("ASPNET.StarterKit.IssueTracker.DataAccessLayer.DataAccessLayerBaseClass"))
10                throw new Exception( "Data Access Layer does not inherit DataAccessLayerBaseClass!");
11            DataAccessLayerBaseClass dc=  (DataAccessLayerBaseClass)Activator.CreateInstance (trp);
12            return (dc);
13        }

14}

15
 

Type trp = Type.GetType(Globals.DataAccessType, true); 这就实现了反射工厂的功能。在Globals.DataAccessType配置了是使用AccessDataAccessLayer还是SQLDataAccessLayer

从而使得方法返回正确的数据操作对象。

标签:
声明:无特别说明,转载请标明本文来源!