工厂模式三层架构
这是BLL层的代码    
        public void Add(HomeWork.Model.Steward_Base model)
        {
            dal.Add(model);
        }错误提示
未将对象引用设置到对象的实例。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。源错误: 
行 29:         {
行 30:             string mykk=model.Steward_Age.ToString();
行 31:             dal.Add(model);
行 32:         }
行 33: 
 源文件: D:\HomeWork\BLL\Steward_Base.cs    行: 31 

解决方案 »

  1.   

    dal定义了吗?HomeWork.Model.Steward_Base model是什么?实体类?string mykk=model.Steward_Age.ToString();
    这一句又是干什么的?你发的东西没头没尾
      

  2.   

    dal的定义为
    private readonly ISteward_Base dal = DataAccess.CreateSteward_Base();
    string mykk=model.Steward_Age.ToString();
    这一句测试用的
      

  3.   

    HomeWork是一级命名空间这是Steward_Base.cs文件的全部代码using System;
    using System.Data;
    using HomeWork.DALFactory;
    using HomeWork.Model;
    using HomeWork.IDAL;
    namespace HomeWork.BLL
    {
        /// <summary>
        /// 业务逻辑类Steward_Base 的摘要说明。
        /// </summary>
        public class Steward_Base
        {
            private readonly ISteward_Base dal = DataAccess.CreateSteward_Base();
            public Steward_Base()
            { }
            #region  成员方法        /// <summary>
            /// 增加一条数据
            /// </summary>
            public void Add(HomeWork.Model.Steward_Base model)
            {
                //string mykk=model.Steward_Age.ToString();
                dal.Add(model);
            }        #endregion  成员方法
        }
    }
      

  4.   

    30行执行通过,说明model没有问题,问题只能是dal没有实例化,检查一下前面的代码吧
      

  5.   

    private readonly ISteward_Base dal = DataAccess.CreateSteward_Base();dal没有 实例化 try -->> private readonly ISteward_Base dal = new  DataAccess.CreateSteward_Base();
      

  6.   

    通过
    vmape(水管)
    hertcloud(·£孙子兵法£·) 
    的答案我想问题应该出现在
    private readonly ISteward_Base dal = DataAccess.CreateSteward_Base();我在调试一下
      

  7.   

    我猜问题可能出
    private readonly ISteward_Base dal = DataAccess.CreateSteward_Base();DataAccess.CreateSteward_Base()
    在这个文件下 public sealed class DataAccess
        {
            private static readonly string path = ConfigurationManager.AppSettings["DAL"];
            /// <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>
            /// 创建  数据层接口
            /// </summary>
            public static HomeWork.IDAL.ISteward_Base CreateSteward_Base()
            {
                string CacheKey = path + ".Steward_Base";
                object objType = CreateObject(path, CacheKey);
                return (ISteward_Base)objType;
            }
        }大家在帮看看这里有什么错误
    会不会是读去缓存的错误
      

  8.   

    DataCache.SetCache(CacheKey, objType);// 写入缓存
    在这里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]; }
      

  9.   

    异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。也可能是数据库数据问题