利用反射动态实例化对象(工厂模式)

需要注意的是程序集名称要与web.config配置文件中定义的名称匹配,程序集名称可通过 右键“项目”→“属性”进行修改

using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
using System.Configuration;

using wzh.Njiagou.IDAL;

namespace wzh.Njiagou.DALFactory
{ /// <summary>
    /// 数据库访问层工厂
    /// </summary>
    public class DataAccess
    {
        /// <summary>
        /// 驱动数据库任务对象实例
        /// </summary>
        public IGBook DriveGbook()
        {
            // 获取程序集名称
            string assemblyName = ConfigurationManager.AppSettings["AssemblyName"];
            // 获取默认构造器名称
            string className = ConfigurationManager.AppSettings["Constructor"];

            // 建立 IGBook 对象实例
            return (IGBook)Assembly.Load(assemblyName).CreateInstance(className);
        }
    }
}


--------------------
<appSettings>
    <!--
 //
 // Access 2000 数据库任务程序集及驱动类名称
 // 如果希望 TraceLWord7 运行在 Access 2000 数据库平台上,
 // 则打开这个注释信息。
 // 并用注释符号掩释 SQLServer 2000 的标记
 // -->
    <add key="AssemblyName" value="wzh.Njiagou.AccessDAL" />
    <add key="Constructor" value="wzh.Njiagou.AccessDAL.gbook" />


    <!--// SQLServer 2000 数据库任务程序集及驱动类名称 //
  <add key="AssemblyName" value="wzh.Njiagou.SQLServerDAL"/>
  <add key="Constructor" value="wzh.Njiagou.SQLServerDAL.gbook"/>-->
  </appSettings>

posted on 2007-07-01 21:50  上校  阅读(733)  评论(0编辑  收藏  举报