关于PetShop分层的问题!

angelface 2004-08-12 11:04:48
PetShop分层的问题, 谁能具体说一下

还有就是这段代码
string path = System.Configuration.ConfigurationSettings.AppSettings["WebDAL"];
string className = path + ".Account";

(PetShop.IDAL.IAccount) Assembly.Load(path).CreateInstance(className);
这里的path, 还有className.
path 是指一个程序集应该, 对吧, 但是, 这个程序集在哪?程序集应该是一个dll,或exe吗不是?className, 又是什么意思!

我是新手, 指多指教, 谢谢!
...全文
351 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
frankyshu 2004-08-30
  • 打赏
  • 举报
回复
mark
zwhe 2004-08-19
  • 打赏
  • 举报
回复
http://dev.csdn.net/develop/article/21/21158.shtm
angelface 2004-08-19
  • 打赏
  • 举报
回复
嘿嘿, 谢谢楼上了,
tkss 2004-08-18
  • 打赏
  • 举报
回复
up
angelface 2004-08-17
  • 打赏
  • 举报
回复
取连接字符串, 我知道, 

  但是为什么要用反射来装载程序集呢? 为了分层?
为什么不能直接new一个实例,zjsen兄说产生了循环引用, 我怎么没有发现?

     还有, 要是装载一个程序集,应该是有一个dll, 或exe吧, 我怎么没有发现有这样的文件?

 新手, 谢谢了! 
goody9807 2004-08-16
  • 打赏
  • 举报
回复
string path = System.Configuration.ConfigurationSettings.AppSettings["WebDAL"];
这个是从web.config文件中的webDAL标志下取出连接数据库字符串的路径

string className = path + ".Account";


(PetShop.IDAL.IAccount) Assembly.Load(path).CreateInstance(className);

只能靠反射来装载程序集
angelface 2004-08-16
  • 打赏
  • 举报
回复
自己up
angelface 2004-08-16
  • 打赏
  • 举报
回复
没有人在来讨论一下啊,
潜水员2099 2004-08-12
  • 打赏
  • 举报
回复
代码的意思从web.config中取PetShop.IDAL.IAccount类的相应信息,调用类CreateInstance的方法:CreateInstance -- 实例化类PetShop.IDAL.IAccount
xueqs 2004-08-12
  • 打赏
  • 举报
回复
分了三层:表现层+逻辑层+数据层

path 只是一个字符串,用来存储从web.config文件取来的WebDAL内容。

再下面那行我业没弄明白。。。
meixiaofeng 2004-08-12
  • 打赏
  • 举报
回复
up
张海霖 2004-08-12
  • 打赏
  • 举报
回复
关注一下
仓木泽 2004-08-12
  • 打赏
  • 举报
回复
up
angelface 2004-08-12
  • 打赏
  • 举报
回复
自己顶一下:)
lglesias 2004-08-12
  • 打赏
  • 举报
回复
up
angelface 2004-08-12
  • 打赏
  • 举报
回复
直接new肯定比反射的效率高, 我同意, 但是, zjsen兄, 可否告诉具体一些, 比如哪些程序集负责哪个层?
如果不用反射的方法是不是也可以实现!
八爪鱼-杭州 2004-08-12
  • 打赏
  • 举报
回复
恰恰相反,petshop中的DAL引用了BLL中的方法,应该说是破坏了分层模式,而且更糟糕的是产生了循环依赖,因此工厂类无法引用DAL,只能靠反射来装载程序集,我个人觉得这样做是非常不好的,因为不能引用DAL也就是说不能直接new一个DAL的类的实例,只能靠CreateInstance来实例,直接new肯定比反射的效率高
angelface 2004-08-12
  • 打赏
  • 举报
回复
嘿嘿, Assembly的问题解了, 知道path, className CreateInstance都是什么了, 但是, 还有一个问题, 要引用程序集应该是有dll或exe文件啊, 我自己试的时候是生成了dll, 但是, petshop里没有啊, 
还有就是, 为什么要用反射的方式来创建这个IAccount呢? 是为了分层?
angelface 2004-08-12
  • 打赏
  • 举报
回复
我还想知道, 哪个命名空间,程序集对应哪个层,
angelface 2004-08-12
  • 打赏
  • 举报
回复
to:xueqs 我正在看这个, 大家看看
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/petshop3x.asp
分层开发在delphi中我到是了解, 但.net里概念不是很清晰, 我也知道那个是从web.config里取到的, 但是我想Assembly.Load();的参数应该是一个程序集的名称吧,一个程序集应该是一个dll或exe吧
to: shitingzhao CreateInstance实例化PetShop.IDAL.IAccount, 是通过反射?

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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