设为首页 加入收藏

TOP

自定义集合实体类(一)
2015-07-24 05:50:27 来源: 作者: 【 】 浏览:11
Tags:定义 集合 实体

概述

对于实体层,在学习三层架构的时候,我们大家都接触过,并且在之后的项目中也运用过,我们也知道,在层和层之间传递的是实体或者是实体集合,那么,在这里问一下大家,你们是如何构建自己的实体集的呢?是通过数组,是通过系统提供的集合,或者是自己针对于每个实体都创建一个自己的集合(每个集合和都是一个套代码),还是其它的方法。

本片博客,本人会通过实例向大家阐释两种方式,这两种方式都是创建自己的实体集合类,但是,这两种方式也是非常不一样的。

复用性差的实体集合类

该方式是为每一个实体类创建一个实体集合类,并且,每个实体集合类里面的功能是一样的,那么,每个实体集合类的不同之处是什么呢?他们的不同之处就是,他们具体的服务对象的类型是固定的。下面是一个实例,大家可以看一下。

实体类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using 集合.集合.灵活性差的ORMapping;

namespace TableToCollection.实体
{
    public class Person
    {
        public string strID { get; set; }
        public string strName { get; set; }
        public int intAge { get; set; }
    }

}

实体集合类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using TableToCollection.实体;

namespace TableToCollection.集合.灵活性差的集合
{
    public class PersonCollection_bad:IEnumerable
    {

        private ArrayList list;

        public int Count 
        {
            get { return list.Count; }
        }

        #region 构造函数
        public PersonCollection_bad()
        {
            list = new ArrayList();
        }

        #endregion
        
        #region 添加
        public void Add(Person p)
        {
            this.list.Add(p);
        }
        public void AddAr(Person[] ps) 
        {
            this.list.AddRange(ps);
        }
        #endregion

        #region 删除
        public void Remove(Person p) 
        {
            this.list.Remove(p);
        }
        public void RemoveAt(int index) 
        {
            this.list.RemoveAt(index);
        }
        public void RemoveRange(int index, int count) 
        {
            this.list.RemoveRange(index, count);
        }
        public void Clear() {
            this.list.Clear();
        }
        #endregion

        #region 自定义索引器
        public Object this[int index]
        {
            get
            {
                return list[index];
            }
            set
            {
                list[index] = value;
            }
        }     
        #endregion

        #region 支持foreach语句遍历
        public IEnumerator GetEnumerator() 
        {
            return list.GetEnumerator();
        }
        #endregion
    }
}

复用性好的实体集合类

对于上面实体集合类的缺点,我们通过泛型的方式解决,也就是类型后绑定的方式。具体思路,创建一个基础实体集合类,然后,将具体集合类继承这个类,并且指定相应的类型,从而达到代码的复用性号,程序的安全性号的目的。实体类使用上面的实体类。

基础实体集合类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 集合.集合.灵活性好的集合
{
    public class BaseCollection
  
   :IEnumerable
   
    ,IEnumerator
    
     ,IList
     
       { private List
      
        list; //定义索引 private int position; public int Count { get { if (list != null) { return list.Count; } return -1; } } /// 
        /// 确定集合中特定对象的索引 ///  /// 
       特定的对象 /// 
       
        如果在列表中找到,则为item 的索引;否则为 -1
        public int IndexOf(T TObject) { return this.list.IndexOf(TObject); } #region 构造方法 public BaseCollection(){ this.list = new List
       
        (); this.position = -1; } #endregion #region 添加 /// 
         /// 将对象添加到集合的尾部 ///  /// 
        要添加到集合尾部的对象 public void Add(T TObject) { this.list.Add(TObject); } /// 
         /// 将指定集合里的元素添加到集合尾部 ///  /// 
        要添加到集合尾部的集合对象 public void AddRange(ICollection
        
          TCollection) { this.list.AddRange(TCollection); } #endregion #region 删除 /// 
          /// 从集合中移除特定对象的第一个匹配项 ///  /// 
         TObject /// 
         
          true:移除成功;false:移除失败
          public bool Remove(T TObject) { return this.list.Remove(TObject); } /// 
          /// 从集合中移除指定索引处的对象 ///  /// 
         索引值,从0开始 public void RemoveAt(int index) { this.list.RemoveAt(index); } /// 
          /// 集合删除所有对象 ///  public void Clear() { this.list.Clear(); } #endregion #region 插入 /// 
          /// 在集合的特定位置插入对象 ///  /// 
         索引,从0开始 /// 
         被插入的对象 public void Insert(int index, T TObject) { this.list.Insert(index, TObject); } #endregion #region 取值 /// 
          /// 获取或设置指定索引处的元素 ///  /// 
         索引值从0开始 /// 
         
          TObject
          public T this[int index] { get { return this.list[index]; } set { this.list[index] = value; } } #endregion #region 实现ICollection
         
          ,因为IList
          
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇POJ 2391Ombrophobic Bovines(二.. 下一篇POJ 2349 Arctic Network 最小生..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: