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)


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

  • 相关阅读:
    Nginx使用教程(八):使用Nginx缓存之Memcached缓存
    Nginx使用教程(七):使用Nginx缓存之proxy cache
    Nginx使用教程(六):使用Nginx缓存之FastCGI缓存
    Nginx使用教程(五):使用Nginx缓存之缓存静态内容
    Nginx使用教程(四):提高Nginx网络吞吐量之buffers优化
    Nginx使用教程(三):Nginx配置性能优化之I/O和TCP配置
    Nginx使用教程(二):Nginx配置性能优化之worker配置
    添加Nginx为系统服务(设置开机启动)
    Nginx主程序使用介绍
    北美IT求职攻略
  • 原文地址:https://www.cnblogs.com/huqingyu/p/217429.html
Copyright © 2011-2022 走看看