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);
}
}
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);
}
}
相关文章推荐
- Memcache基础教程 && Ubuntu 安装Memcache服务
- 使用原生SQL返回实体类具体实现详情
- mysql的安装
- Oracle 中文数据导入乱码问题解决
- mysql 支持emoji表情
- 关于Mysql的Qcache优化
- PL/SQL应用(语句)
- saltstack 安装mysql
- NoSQL世界里的Memcached和redis缓存的区别
- 使用Loader实时查询本地数据库用法
- ADO.NET导入文件到数据库4
- Hive sql 优化介绍
- oracle在SQLPLUS 和PLSQL建 job 的区别
- PLSQL与SQL配合使用(DDL)
- oracle 时间段相减 以秒为单位
- Oralce PL/SQL 调用C
- SQL Server 复制快照执行错误 错误代码 14068
- PASSION之Mysql集群(一)
- mysql主从复制
- mysql5.6.27安装 总结