| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 | 
							- using System;
 
- using System.Collections.Generic;
 
- using System.Linq;
 
- using Fort23.UTool;
 
- namespace Fort23.GameData
 
- {
 
-     public abstract class ConfigHolder
 
-     {
 
-         public bool IsChild { get; set; }
 
-         public abstract Type ConfigType { get; }
 
-         public abstract IConfig GetFirst();
 
-         public abstract List<IConfig> GetAll();
 
-         public abstract IConfig TryGet(int type);
 
-         public abstract void SetConfig(List<IConfig> config);
 
-         public abstract void AddChild(ConfigHolder child);
 
-         // public abstract void Add
 
-         public virtual void Init()
 
-         {
 
-         }
 
-     }
 
-     /// <summary>
 
-     /// 管理所有的配置
 
-     /// </summary>
 
-     /// <typeparam name="T"></typeparam>
 
-     [Serializable]
 
-     public abstract class ConfigHolder<T> : ConfigHolder where T : IConfig
 
-     {
 
-         public List<T> configList;
 
-         private Dictionary<int, IConfig> _dictionary;
 
-         private List<ConfigHolder> _children;
 
-         public override void Init()
 
-         {
 
-             _dictionary = new Dictionary<int, IConfig>();
 
-             _children = new List<ConfigHolder>();
 
-             foreach (var config in configList)
 
-             {
 
-                 _dictionary.Add(config.GetID(), config);
 
-             }
 
-         }
 
-         public override void AddChild(ConfigHolder child)
 
-         {
 
-             child.IsChild = true;
 
-             _children.Add(child);
 
-         }
 
-         public override void SetConfig(List<IConfig> config)
 
-         {
 
-             if (configList != null)
 
-             {
 
-                 return;
 
-             }
 
-             configList = new List<T>();
 
-             for (int i = 0; i < config.Count; i++)
 
-             {
 
-                 configList.Add((T)config[i]);
 
-             }
 
-         }
 
-         public override Type ConfigType
 
-         {
 
-             get { return typeof(T); }
 
-         }
 
-         public override IConfig TryGet(int ID)
 
-         {
 
-             if (ID <= 0)
 
-             {
 
-                 LogTool.Log($"在表{typeof(T)}中没有找到ID:{ID}");
 
-                 return null;
 
-             }
 
-             IConfig t;
 
-             if (!_dictionary.TryGetValue(ID, out t))
 
-             {
 
-                 for (int i = 0; i < _children.Count; i++)
 
-                 {
 
-                     IConfig config = _children[i].TryGet(ID);
 
-                     if (config != null)
 
-                     {
 
-                         return config;
 
-                     }
 
-                 }
 
-                 if (!IsChild)
 
-                 {
 
-                     LogTool.Log($"在表{typeof(T)}中没有找到ID:{ID}————{_dictionary.Count}");
 
-                 }
 
-                 return null;
 
-             }
 
-             return t;
 
-         }
 
-         public override List<IConfig> GetAll()
 
-         {
 
-             List<IConfig> configs = _dictionary.Values.ToList();
 
-             for (int i = 0; i < _children.Count; i++)
 
-             {
 
-                 configs.AddRange(_children[i].GetAll());
 
-             }
 
-             return configs;
 
-         }
 
-         public override IConfig GetFirst()
 
-         {
 
-             return _dictionary.Values.First();
 
-         }
 
-     }
 
- }
 
 
  |