/// <summary>
 /// Inicializa a instancia.
 /// </summary>
 /// <param name="attribList"></param>
 protected override void Initialize(IEnumerable <string> attribList)
 {
     if (attribList != null)
     {
         IIndexStore store      = null;
         IEnumerator enumerator = attribList.GetEnumerator();
         while (enumerator.MoveNext())
         {
             store = new HashStore();
             base._indexTable[enumerator.Current.ToString()] = store;
         }
         store = new HashStore();
         base._indexTable["$Tag$"] = store;
     }
 }
        /// <summary>
        /// Adiciona uma chave e um valor para o indice.
        /// </summary>
        /// <param name="key">Chave que será adicionada.</param>
        /// <param name="value">Valor que será adicionado.</param>
        public override void AddToIndex(object key, object value)
        {
            IDictionaryEnumerator enumerator = (value as Hashtable).GetEnumerator();

            while (enumerator.MoveNext())
            {
                string      indexKey = (string)enumerator.Key;
                IIndexStore store    = base._indexTable[indexKey] as IIndexStore;
                if (store == null)
                {
                    if (indexKey == "$Tag$")
                    {
                        store = new HashStore();
                        base._indexTable[indexKey] = store;
                    }
                    else
                    {
                        string str2 = base.ConvertToNamedTagKey(indexKey);
                        store = base._indexTable[str2] as IIndexStore;
                        if (store == null)
                        {
                            store = new HashStore();
                            base._indexTable[str2] = store;
                        }
                    }
                }
                if (store != null)
                {
                    object obj2 = enumerator.Value;
                    if (obj2 != null)
                    {
                        store.Add(obj2, key);
                    }
                    else
                    {
                        store.Add(CacheNull.Value, key);
                    }
                }
            }
        }