接口类  public interface IMainMachine
定义了 BaseUser m_user { get; set; }   (BaseUser 是个实体类 )抽象类    public abstract class BaseMachine:IMainMachine   中      public BaseMachine()
        {
            m_user = new BaseUser();
            m_user.Name = ConfigUtil.GetTypeValue("UserName");
            m_user.PassWord = ConfigUtil.GetTypeValue("PassWord");        }      public BaseUser m_user
        {
            get
            {
                return m_user;
            }
            set
            {
                m_user = value;
            }
        }现在问题是在set上报错:未处理的“System.StackOverflowException”类型的异常出现
如果将  BaseMachine中的内容注释掉就不会报错
大家帮帮看看这是什么问题
我只是想在抽象类中初始化一些数据

解决方案 »

  1.   

    private BaseUser m_user;
        public BaseUser user
            { 
                get 
                { 
                    return m_user; 
                } 
                set 
                { 
                    m_user = value; 
                } 
            }
      

  2.   

    你的代码循环递归了。set m_user 调用了 set m_user,set m_user 又调用了 set m_user
    最后堆栈溢出了
      

  3.   

    很明显,你没有为m_user属性创建相应的字段。m_user = value; 这个赋值句相当于外部调用m_user的set段,所以一直在重复调用,造成堆溢出。解决方法是BaseMachine类里加一个字段——你应该在接口里写BaseUser User { get; set; },BaseMachine里写BaseUser user(或你喜欢m_user);然后
          public BaseUser User 
            { 
                get 
                { 
                    return user; 
                } 
                set 
                { 
                    user = value; 
                } 
            }