一个解决方案中有六个项目:
其中IDAL为接口
DataFactory为工厂类
BLL为中间业务层!在工厂类中:
using System;
using System.Reflection;
using System.Configuration;namespace BookShop.DALFactory
{public class Admin
{
public static BookShop.IDAL.IADMIN Create()
{
           string Path =System.Configuration.ConfigurationSettings.AppSettings["WebDAL"];
           string ClassName = Path + ".Admin";
   return (BookShop.IDAL.IADMIN) Assembly.Load(Path).CreateInstance(ClassName);
  
}
}
}调试通过!在BLL类中:
using System;
using BookShop.DALFactory;
using BookShop.IDAL;
using BookShop.MODEL;namespace BookShop.BLL
{
/// <summary>
/// Admin 的摘要说明。
/// </summary>
public class Admin
{
public ADMINInfo SignIn(string adminName, string adminPassword)
{
if((adminName.Trim() == string.Empty) || (adminPassword.Trim() == string.Empty))
{
return null;
}
else
{
IADMIN Dal = BookShop.DALFactory.Admin.Create();
ADMINInfo ObjAdmin = Dal.SignIn(adminName, adminPassword);
return ObjAdmin;
}}
}
}
执行的时候总是出现
ADMINInfo ObjAdmin = Dal.SignIn(adminName, adminPassword);
没有引用到对象!
发现原因是IADMIN Dal = BookShop.DALFactory.Admin.Create();的数值为null请各位老师帮忙,谢谢!

解决方案 »

  1.   

    为什么IADMIN Dal = BookShop.DALFactory.Admin.Create();的数值为null
      

  2.   

    在的bin目录下面去看有没有你web.config文件webdal这个value属性定义的那个dll文件。
    如果没有就是null了, 代码本身没有什么问题。 主要是检测你的项目配置了。
      

  3.   

    BookShop.BLL.Admin实现了BookShop.IDAL.IADMIN接口吗?
      

  4.   

    TO:shuo_shu(取个名字还真难)
    在bin目录下有这个web.config文件webdal的value定义的dll文件!
      

  5.   

    断点调试一下看ClassName和PATH是什么?
      

  6.   

    断点调试ClassName与PATH都对啊!
      

  7.   

    最终的ClassName应该是你具体的数据访问类
    比较Sql的话,你的数据访问类的名字为BookShop.SQLServerDAL
    那ClassName就是BookShop.SQLServerDAL.Admin
      

  8.   

    我也是这么写的呀,可是怎么就是不对呢?
    是否其他的地方的原因?
    谢谢chengbo1983,您真是个高手啊!
      

  9.   

    我猜你是仿造PetShop这个例子来做的
    BookShop.SQLServerDAL.Admin应该实现IADMIN接口
      

  10.   

    是的,Admin也实现IADMIN接口了!
    谢谢chengbo1983啊
      

  11.   

    我晕
    我的QQ7896503
    加我,QQ上说