Infra.cs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. using System;
  2. using System.Collections.Generic;
  3. using log4net;
  4. using Quadarax.Foundation.Infrastructure.Layers;
  5. namespace Quadarax.Foundation.Infrastructure
  6. {
  7. public static class Infra
  8. {
  9. private static ILog _logger = LogManager.GetLogger(typeof(Infra));
  10. public static bool IsInitialized { get; private set; }
  11. public static void Initialize<TGlobalLayer>(string globalLayerName,params object[] initialArgs) where TGlobalLayer : GlobalLayer
  12. {
  13. if (IsInitialized)
  14. throw new InvalidOperationException("Infrastructure is already initialized!");
  15. GlobalContainer.Instance.CreateGlobal<TGlobalLayer>(globalLayerName);
  16. IsInitialized = true;
  17. }
  18. public static TModule Get<TModule>() where TModule : IModule
  19. {
  20. if (!IsInitialized)
  21. throw new InvalidOperationException("Infrastructure is not initialized! Call Infra.Initialize first!");
  22. return GlobalContainer.Instance.RootLayer.Get<TModule>();
  23. }
  24. public static IEnumerable<string> GetLayerNames()
  25. {
  26. return GlobalContainer.Instance.GetLayerNames();
  27. }
  28. public static string Dump()
  29. {
  30. if (!IsInitialized)
  31. return "Not initialized!";
  32. return GlobalContainer.Instance.Dump();
  33. }
  34. public static string DumpContainers()
  35. {
  36. if (!IsInitialized)
  37. return "Not initialized!";
  38. return GlobalContainer.Instance.DumpContainer();
  39. }
  40. }
  41. }