zoukankan      html  css  js  c++  java
  • [Enterprise Library]Data (二)DataCollection

    上节[Enterprise Library]Data (一)Data的config文件我们看到三个集合类:
    DatabaseTypeDataCollection
    InstanceDataCollection
    ConnectionStringDataCollection

    它们都是从Enterprise Library的Common.DataCollection中继承而来,
        [XmlType(IncludeInSchema=false)]
        [Serializable]
        public abstract class DataCollection : ICollection, ISerializable, IDeserializationCallback
        {
           ...
        }


    1)DataCollection有五个构造函数:
    protected DataCollection()
    protected DataCollection(int capacity)
    protected DataCollection(IHashCodeProvider hashCodeProvider, IComparer comparer)
    protected DataCollection(int capacity, IHashCodeProvider hashCodeProvider, IComparer comparer)
    protected DataCollection(SerializationInfo info, StreamingContext context)

    2)与以前dotText中处理的普通Collection一样,内部需要定义一个IEnumerator:
            [Serializable()]
            internal class DataCollectionValuesEnumerator : IEnumerator

    类似地,这个类需要实现一下:
    public bool MoveNext()
    public void Reset()
    public object Current

    并且Collection中需要有这样一个GetEnumerator()函数:
            public IEnumerator GetEnumerator()
            {
                return new DataCollectionValuesEnumerator(this);
            }

    3)内部还额外地实现了一个存取String的Collection:KeysCollection
            [Serializable()]
            public sealed class KeysCollection : ICollection

    a)取string
    public String Get(int index)
    public string this[int index]

    b)string版的CopyTo
    void ICollection.CopyTo(Array array, int index) { string[] stringArray = array as string[]; ... }
    public void CopyTo(string[] array, int index)

    c)构造函数:nternal KeysCollection(DataCollection collection)
    d)public IEnumerator GetEnumerator()

    而在Collecton中:
            private KeysCollection keys;
            public KeysCollection Keys
            {
                get
                {
                    if (keys == null)
                    {
                        keys = new KeysCollection(this);
                    }
                    return keys;
                }
            }

    4)DataCollection中public的函数:

    public bool Contains(string name)
    public void RemoveAt(int index)
    public void Remove(string name)
    public void Clear()
    public void CopyTo(Array array, int index)


    public virtual void OnDeserialization(Object sender)
    public virtual void GetObjectData(SerializationInfo info, StreamingContext context)


    其它的内部实现以后再分析。

  • 相关阅读:
    VBA基础四:数据库链接(WPS2019)
    VBA基础三:循环(DO...LOOP,)
    随机多人红包
    概率抽奖
    七步轻松实现大数据库表的数据转储
    SQL Server中的行列倒置技巧
    把对应表的字段跨表赋值
    sql内日期格式化输出
    事务的用法
    女孩,你为什么不沉住气奋斗
  • 原文地址:https://www.cnblogs.com/huqingyu/p/217429.html
Copyright © 2011-2022 走看看