PetShop学习记录----数据库访问

来源:互联网 发布:贵阳房价上涨知乎 编辑:程序博客网 时间:2024/05/17 23:26

背景知识:利用 反射代替new

Assembly.load(程序集).CreateInStance(命名空间.类),这里的程序集读取的是Web层bin文件下对应的DLL,所以必须把对应的DLL放入bin文件夹下

PetShop实例:

界面层访问BLL层,BLL通过反射newIproduct对象,访问SQLSERVERDAL.Product的getproduct方法

class Program

    {

        static void Main(string[] args)

        {

           BLL.Product p = new BLL.Product();          

            Console.WriteLine( p.GetProduct("11"));

        }

    }

 

namespace BLL

{

    public classProduct

    {

        private staticreadonly IDAL.IProductdal = DALFactory.DataAccess.CreateProduct();

 

        public stringGetProduct(string prodid)

        {

          return dal.GetProduct(prodid);

        }

    }

}


namespace DALFactory {

  private static readonly string path = ConfigurationManager.AppSettings["WebDAL"];

 public sealed class DataAccess {
     
       public static IDAL.IProduct CreateProduct() {
            string className = path + ".Product";
            //利用反射技术,动态加载指定类型
            return (PetShop.IDAL.IProduct)Assembly.Load(path).CreateInstance(className);//通过修改配置文件(web.config)动态加载类
        }

 }

}

namespace SQLServerDAL

{

    public classProduct :IProduct

    {

        public stringGetProduct(string id)

        {

            return "PROD"+ id;

        }

    }

}

 

同时需要 IProduct接口

namespace IDAL

{

    public interfaceIProduct

    {

        string GetProduct(stringid);

    }

}

 

 

 

0 0
原创粉丝点击