您的位置:首页 > 数据库

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

2015-10-29 17:44 344 查看
背景知识:利用 反射代替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);

    }

}

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: