当前位置:编程学习 > C#/ASP.NET >>

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
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,