3层架构用数据工厂出现的错误

来源:百度知道 编辑:UC知道 时间:2024/05/17 03:28:09
我的解决方案有6个项目
BLL
DALFactory
DataProviders
IDAL
Model
WEB
用的命名空间是 MyHtml.+项目名称
DALFactory中用到了反射

private static readonly string path =System.Configuration.ConfigurationManager.AppSettings["WebDAL"];
private DataAcess() { }
public static MyHtml.IDAL.IUsers CreateUsers()
{
string className = path + ".Users";
return (MyHtml.IDAL.IUsers)Assembly.Load(path).CreateInstance(className);
}
WebDAL在web.config中
<add key="WebDAL" value="MyHtml.DataProviders"/>
为什么一运行就说
未能加载文件或程序集“MyHtml.DataProviders”或它的某一个依赖项。系统找不到指定的文件。
改成
<add key="WebDAL" value="DataProviders"/>就可以运行
但是string className = path + ".Users";
这个 className 就不对了
不用WEB.CONFIG
直接写
return (MyHtml.IDAL.IUsers)Assembly.Load("DataProviders").CreateInstance(&qu

您好,

我想问题是出在这里:

您看一下网上下载的例子(是PetShop吧?呵呵),看一下它生成的dll文件的文件名,如果没有错的话,它的文件名是“XXX.DataProviders”。

而您的程序集(DLL文件)的命名空间是“MyHtml.DataProviders”,生成的文件名却是“DataProviders”。

Assembly.Load方法要求传递实际物理存在的文件名而不是命名空间。

您可以在“解决方案管理器”中又键点击项目察看项目属性,然后修改生成的程序集的名字,应该就没有问题了。

如果您还有疑问,请补充问题。

谢谢。

这个问题肯定是出在你的path变量上了。具体你可以跟踪看一下路径,是个小问题

你可以进行一下单步跟踪调试,因为你现在的问题有很大的笼统性