System.NullReferenceException: 未将对象引用设置到对象的实例。
高手帮忙,出现以下错误,无论是调用哪个过程,都是如此,错误返回总是dal.GetList();
行 63: public IList GetList()
行 64: {
行 65: return dal.GetList();
行 66: }
行 67:
源文件: D:\Aspx\Person\BLL\User.cs 行: 65
堆栈跟踪:
[NullReferenceException: 未将对象引用设置到对象的实例。]
Person.BLL.User.GetList() in D:\Aspx\Person\BLL\User.cs:65
Web.Admin.BankTypeList.Page_Load(Object sender, EventArgs e) in d:\aspx\person\web\admin\banktypelist.aspx.cs:33
System.Web.UI.Control.OnLoad(EventArgs e) +67
System.Web.UI.Control.LoadRecursive() +35
System.Web.UI.Page.ProcessRequestMain() +731
--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:1.1.4322.573; ASP.NET 版本:1.1.4322.573 --------------------编程问答-------------------- 急,在线等,谢谢大家! --------------------编程问答-------------------- dal是什么?
--------------------编程问答-------------------- dal是空值 --------------------编程问答-------------------- 按照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 成员方法
}
}
--------------------编程问答-------------------- DALFactory中的DataAccess.cs
using 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;
}
}
}
--------------------编程问答-------------------- DALFactory中的DataCache.cs
using 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);
}
}
}
--------------------编程问答-------------------- 你调试一下,看看DataAccess.CreateBankType();返回的是不是空.
还有dal.GetList();其中GetList方法里是不是有什么问题.
--------------------编程问答-------------------- 设了断点也不起作用~ --------------------编程问答-------------------- objType = Assembly.Load(path).CreateInstance(CacheKey);//反射创建
你的这个objType根本就是一个空值,所以到到objCache.Insert(CacheKey, objObject)后,objObject还是空值
补充:.NET技术 , ASP.NET