AllConfigManager.cs 1.4 KB

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