首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

函数计算已终止 好像是封装有关问题 求大神解答

2012-10-24 
函数计算已终止 好像是封装问题 求大神解答自己封装的第基类:C# codeusing Systemusing System.Collectio

函数计算已终止 好像是封装问题 求大神解答
自己封装的第基类:

C# code
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;using System.Data.SqlClient;using System.Collections;using BLL;namespace Model{    /// <summary>    /// 其他模板类的基类    /// 通过GUID实例化 将调用DAL 会进行数据库访问  从何获取一个DATATABLE赋值    /// 通过DATAROW实例化无需数据库访问 会循环以列名  值 的格式存入HashTable(Ht)    /// 无参数实例化    /// 索引器接收STRING类型参数  作为HT的KEY 取值    ///     /// 创建时间:2011年8月29日10:31:03    /// </summary>    public class ObjectData : Object    {        #region 变量属性        string guid = string.Empty; //GUID        public string Guid        {            get { return guid; }            set { guid = value; }        }        string name = string.Empty; //Name        public string Name        {            get { return name; }            set { name = value; }        }        int dataState = 0;          //数据状态        public int DataState        {            get { return dataState; }            set { dataState = value; }        }        Hashtable ht = new Hashtable(); //字段集合        public Hashtable Ht        {            get { return ht; }            set { ht = value; }        }        DateTime _CreateTime;       //数据创建时间        public DateTime CreateTime        {            get { return _CreateTime; }        }        #endregion                #region 构造函数和索引器        //索引器        public virtual object this[string Key]        {            get { return ht[Key]; }        }        //无参数实例化        public ObjectData() : base() { }        //GUID 表名实例化        /// <summary>        /// 基本所有数据都有GUID  所以 接收一个GUID  一个TABLENAME        /// </summary>        /// <param name="guid"></param>        /// <param name="TableName"></param>        public ObjectData(string guid, string TableName)            : base()        {        }        //数据行实例化        /// <summary>        /// 根据DataRow生成        /// </summary>        /// <param name="dr"></param>        public ObjectData(DataRow dr)        {            FillData(dr);        }        #endregion        #region 方法        public override string ToString()        {            return name;        }        //判断是否相等        /// <summary>        /// 检查是否相等        /// </summary>        /// <param name="guid">传入了一个guid</param>        /// <returns>返回结果</returns>        public virtual bool Equals(string guid)        {            if (this.guid == guid)                return true;            return false;        }        public virtual bool Equals(ObjectData obj)        {            if (this.guid == obj.guid)                return true;            return false;        }        //存入数据        /// <summary>        /// 填充数据用        /// </summary>        /// <param name="dt"></param>        public virtual void FillData(DataRow dt)        {            foreach (DataColumn dc in dt.Table.Columns)            {                switch (dc.ColumnName.ToLower())                {                    case "name":                        this.Name = dt[dc.ColumnName].ToString();                        break;                    case "guid":                        this.Guid = dt[dc.ColumnName].ToString();                        break;                    case "createtime":                        this._CreateTime = DateTime.Parse(dt[dc.ColumnName].ToString());                        break;                }                ht.Add(dc.ColumnName, dt[dc.ColumnName].ToString());            }        }        //实例化Item实例        public virtual void FillItem(DataTable dt)        {            throw new Exception("FillItem没有得到重写");        }        #endregion    }}


这是 继承自基类的一个派生类 


C# code
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;namespace Model{    public class UrbanAreasInfo : ObjectData    {        #region 变量 属性        int? _ID = null;    //市区ID        public int? ID        {            get { return ID; }        }        string _Memo = string.Empty; //备注        public string Memo        {            get { return _Memo; }        }        CommunityInfo[] _Item;       //小区下楼盘        public CommunityInfo[] Items        {            get { return _Item; }        }        #endregion        #region 构造函数 索引        public UrbanAreasInfo() : base() { }        public UrbanAreasInfo(string guid)            : base(guid, "UrbanAreas")        {            _ID = Int32.Parse(this.Ht["UrbanAreasID"].ToString());            _Memo = this.Ht["Memo"].ToString();        }        public UrbanAreasInfo(DataRow dr)            : base(dr)        {            _ID = Int32.Parse(this.Ht["UrbanAreasID"].ToString());            _Memo = this.Ht["Memo"].ToString();        }        #endregion        #region 方法        public override void FillItem(DataTable dt)        {            _Item = new CommunityInfo[dt.Rows.Count];            int _Index = 0;            foreach (DataRow dr in dt.Select("guid = '"+this.Guid+"'"))            {                _Item[_Index] = new CommunityInfo(dr);            }        }        #endregion    }}



这是 出错时候的方法体
C# code
        private void FillTreeView()        {            treeView1.Nodes.Clear();            UrArray = new List<UrbanAreasInfo>();            TreeNode All = new TreeNode("全部");            hd = new HouseDocument();            hd.FillThisOfTableName("UrbanAreas");            hd.FillThisOfTableName("Community");            hd.FillThisOfTableName("CommunityDetailsPosition");;            for (int i = 0; i < hd.Ds.Tables[0].Rows.Count; i++)            {                UrbanAreasInfo xx = new UrbanAreasInfo(hd.Ds.Tables[0].Rows[i]);                UrArray.Add(new UrbanAreasInfo(hd.Ds.Tables[0].Rows[i]));                UrArray[i].FillItem(hd.Ds.Tables[1]);                foreach(CommunityInfo com in UrArray[i].Items)                {                    com.FillItem(hd.Ds.Tables[2]);                }            }            foreach(UrbanAreasInfo urinfo in UrArray)            {                TreeNode UrNode = new TreeNode(urinfo.Name);                CommunityInfo[] Item = urinfo.Items;                foreach(CommunityInfo com in Item)                {                    TreeNode comNode = new TreeNode(com.Name);                    CommunityDetails[] ComItem = com.Items;                    foreach(CommunityDetails comdNode in ComItem)                    {                        comNode.Nodes.Add(new TreeNode(comdNode.Name));                    }                    UrNode.Nodes.Add(comNode);                }                All.Nodes.Add(UrNode);            }            treeView1.Nodes.Add(All);        }


调试后 监视用DataRow实例化后的UrbanAreasInfo 对象 一打开那个字段的菜单 里面有个红色叹号 后面写着 函数计算已终止 求解 为何啊 哪里的问题~~

[解决办法]
int? _ID = null; //市区ID
public int? ID
{
get { return ID; }
}
这个是死循环!!!
应该这样写
int? _ID = null; //市区ID
public int? ID
{
get { return _ID; }
}

热点排行