AllConfigManager.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. using System.Collections.Generic;
  2. using System.ComponentModel;
  3. using System.IO;
  4. namespace World
  5. {
  6. public class AllConfigManager
  7. {
  8. public readonly Dictionary<string, object> allConfig = new Dictionary<string, object>();
  9. public AllConfigManager(string path)
  10. {
  11. foreach (var dir in Directory.GetDirectories(path))
  12. {
  13. // 配置目录名与类名一致
  14. string baseName = new DirectoryInfo(dir).Name;
  15. var assembly = typeof (AllConfigManager).Assembly;
  16. object obj = assembly.CreateInstance(baseName);
  17. var iSupportInitialize = obj as ISupportInitialize;
  18. if (iSupportInitialize != null)
  19. {
  20. iSupportInitialize.BeginInit();
  21. }
  22. var iInit = obj as IConfigInitialize;
  23. if (iInit != null)
  24. {
  25. iInit.Init(dir);
  26. }
  27. if (iSupportInitialize != null)
  28. {
  29. iSupportInitialize.EndInit();
  30. }
  31. }
  32. }
  33. public T Get<T>(int type) where T : IType
  34. {
  35. var configManager = (ConfigManager<T>)allConfig[typeof (T).Name];
  36. return configManager[type];
  37. }
  38. public Dictionary<int, T> GetAll<T>() where T : IType
  39. {
  40. var configManager = (ConfigManager<T>)allConfig[typeof (T).Name];
  41. return configManager.GetAll();
  42. }
  43. public ConfigManager<T> GetConfigManager<T>() where T : IType
  44. {
  45. return (ConfigManager<T>)allConfig[typeof(T).Name];
  46. }
  47. }
  48. }