按照PETSHOP的写法做的 BLL的全部using System;
using System.Data;
using System.Text;
using System.Collections;
using System.Data.SqlClient;
using Person.Model;
using Person.IDAL;
using Person.DALFactory;namespace Person.BLL
{
/// <summary>
/// 业务逻辑类BankType 的摘要说明。
/// </summary>
public class BankType
{
private static readonly IBankType dal = DataAccess.CreateBankType();
public BankType()
{}
#region  成员方法
/// <summary>
/// 增加一条数据
/// </summary>
public void Add(Person.Model.BankType model)
{
dal.Add(model);
} /// <summary>
/// 更新一条数据
/// </summary>
public void Update(Person.Model.BankType model)
{
dal.Update(model);
} /// <summary>
/// 删除一条数据
/// </summary>
public void Delete(int ID)
{
dal.Delete(ID);
} /// <summary>
/// 得到一个对象实体
/// </summary>
public Person.Model.BankType GetModel(int ID)
{
return dal.GetModel(ID);
} /// <summary>
/// 获得数据列表
/// </summary>
public IList GetList()
{
return dal.GetList();
}
#endregion  成员方法
}
}

解决方案 »

  1.   

    DALFactory中的DataAccess.csusing System;
    using System.Reflection;
    using System.Configuration;
    using Person.IDAL;namespace Person.DALFactory
    {
    public sealed class DataAccess
    {
    private static readonly string path = System.Configuration.ConfigurationSettings.AppSettings["WebDAL"]; /// <summary>
    /// 创建对象或从缓存获取
    /// </summary>
    public static object CreateObject(string path,string CacheKey)
    {
    object objType = DataCache.GetCache(CacheKey);//从缓存读取
    if (objType == null)
    {
    try
    {
    objType = Assembly.Load(path).CreateInstance(CacheKey);//反射创建
    DataCache.SetCache(CacheKey, objType);// 写入缓存
    }
    catch
    {}
    }
    return objType;
    }
    /// <summary>
    /// 创建User数据层接口
    /// </summary>
    public static Person.IDAL.IUser CreateUser()
    {
    string CacheKey = path+".User";
    object objType=CreateObject(path,CacheKey);
    return (IUser)objType;
    } /// <summary>
    /// 创建BankType数据层接口
    /// </summary>
    public static Person.IDAL.IBankType CreateBankType()
    {
    string CacheKey = path+".BankType";
    object objType=CreateObject(path,CacheKey);
    return (IBankType)objType;
    }
    }
    }
      

  2.   

    DALFactory中的DataCache.csusing System;
    using System.Web;namespace Person.DALFactory
    {
    /// <summary>
    /// 缓存相关的操作类
    /// </summary>
    public class DataCache
    {
    /// <summary>
    /// 获取当前应用程序指定CacheKey的Cache值
    /// </summary>
    /// <param name="CacheKey"></param>
    /// <returns></returns>
    public static object GetCache(string CacheKey)
    { System.Web.Caching.Cache objCache = HttpRuntime.Cache;
    return objCache[CacheKey]; } /// <summary>
    /// 设置当前应用程序指定CacheKey的Cache值
    /// </summary>
    /// <param name="CacheKey"></param>
    /// <param name="objObject"></param>
    public static void SetCache(string CacheKey, object objObject)
    {
    System.Web.Caching.Cache objCache = HttpRuntime.Cache;
    objCache.Insert(CacheKey, objObject);
    }
    }
    }
      

  3.   

    你调试一下,看看DataAccess.CreateBankType();返回的是不是空.
    还有dal.GetList();其中GetList方法里是不是有什么问题.
      

  4.   

    objType   =   Assembly.Load(path).CreateInstance(CacheKey);//反射创建你的这个objType根本就是一个空值,所以到到objCache.Insert(CacheKey,   objObject)后,objObject还是空值