100分求PetShop的问题

lovefootball 2004-08-11 07:38:22
俺是一个初学者,仿着PetShop做了一个小东东。


Web这样写的:

using BLL;
ClassLog classlog = new ClassLog();
在PageLoad里调用ClassLog:
DS = classlog.GetClassInfo();
其中ClassLog是BLL的一个类


BLL这样写的:
BLL里有一个ClassLog.cs
using System;
using System.Data;
namespace BLL.BaseInfo
{
public class ClassLog
{
public DataSet GetClassInfo()
{
IDAL.IClassLog classlog = DALFactory.ClassLog.Create();
return classlog.GetClassInfo();
}
}
}


IDAL这样写的:

IDAL里有一个IClassLog.cs

using System;
using System.Data;
namespace IDAL
{
public interface IClassLog
{
DataSet GetClassInfo();
}
}


FactoryDAL这样写的:

FactoryDAL里有一个ClassLog.cs

using System;
using System.Reflection;
using System.Configuration;
using System.Security.Policy;
namespace DALFactory
{
public class ClassLog
{
public static IDAL.IClassLog Create()
{
string Path = System.Configuration.ConfigurationSettings.AppSettings["WebDAL"];
string ClassName = Path + ".ClassLog";
return (IDAL.IClassLog) Assembly.Load(Path).CreateInstance(ClassName);
}
}
}

还有SQLDAL和OracleDAL分别都有一个ClassLog.cs
我想根据WebConfig的设置调用SQLDAL或者调用OracleDal。
运行的时候说找不到文件或程序集名称“SQLDAL”,或找不到它的一个依赖项。
return (IDAL.IClassLog) Assembly.Load(Path).CreateInstance(ClassName);这句话出的问题
谢谢了~~~~~~~~~~~
...全文
282 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
csq0516 2004-08-12
  • 打赏
  • 举报
回复
up
scottfreecsdn 2004-08-12
  • 打赏
  • 举报
回复
我觉他,BLL和ADL都没有搞清楚
lovefootball 2004-08-12
  • 打赏
  • 举报
回复
用New一个实例怎么实现呢?
现在建立一个公用模块倒是调通了, zjsen(星愿)(个人观点,仅供参考.请自行验证) 您的意思是这样做效率不高是么?
lovefootball 2004-08-12
  • 打赏
  • 举报
回复
给介绍一下分层模式的概念呗,谢谢了
推荐几本书
jamesfay 2004-08-12
  • 打赏
  • 举报
回复
up
elite2018 2004-08-12
  • 打赏
  • 举报
回复
set a breakpoint ,and trace it
csq0516 2004-08-11
  • 打赏
  • 举报
回复
up
lovefootball 2004-08-11
  • 打赏
  • 举报
回复
也就是说我可以在DALFactory里引用SQLDAL,然后把Assemble.Load(path)换成New过的实例名是么
八爪鱼-杭州 2004-08-11
  • 打赏
  • 举报
回复
??
----------
循环依赖了当然不能引用了
你可能没搞清楚分层模式,你应该找本设计模式的书看看分层模式
如果你不考虑效率的话,可以不引用SQLDAL,在程序中用Assemble.LoadFrom()来加载SQLDAL
循环依赖是可以消除的,比如建立一个公用模块,或者数据层不要通过业务层来获取数据,直接在数据层里获取。
另外,new一个实例和CreateInstance来反射得到一个实例在效率上相差很大的

lovefootball 2004-08-11
  • 打赏
  • 举报
回复
顶顶吧
lovefootball 2004-08-11
  • 打赏
  • 举报
回复
哪应该怎么写啊,在DALFactory里引用SQLDAL么?
那我想要在SQLDAL里面引用BLL怎么办啊
他说我循环依赖项
能给出代码和详细的引用么?
谢谢
八爪鱼-杭州 2004-08-11
  • 打赏
  • 举报
回复
如果没有把SQLDAL引用进来,怎么能用Assemble.Load来装载一个程序集呢,
用Assemble.LoadFrom("路径\\SQLDAL.dll").CreateInstance(ClassName);
我觉得你这样做是有问题的,每次要访问数据库都要做装载程序集和反射
lovefootball 2004-08-11
  • 打赏
  • 举报
回复
当然对啊
WebConfig里就是SQLDAL啊

bitsbird(一瓢.net)
你的意思是不是要把解决方案也写上啊
比如ObjOperate.SQLDAL
另外在哪引用SQLDAL啊
我SQLDAL要用到BLL的逻辑类的,所以DALFactory不能引用SQLDAL了,他说我什么循环引用
wintle 2004-08-11
  • 打赏
  • 举报
回复
Web.Config有没有配置对?
lovefootball 2004-08-11
  • 打赏
  • 举报
回复
我BLL里添加的IDAL和FactoryDAL
DALFactory里添加的IDAL
OracleDAL和SQLDAL添加的是IDAL和BLL
bitsbird 2004-08-11
  • 打赏
  • 举报
回复
using ...SQLDAL;
hujiiori 2004-08-11
  • 打赏
  • 举报
回复
Web项目有没有添加其他项目的引用,如果没有右键点击web项目添加引用,bll也要添加dal的引用
lovefootball 2004-08-11
  • 打赏
  • 举报
回复
怎么没人呢
自己顶~~~~~~~

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧