Advertisement
Guest User

Untitled

a guest
Jun 30th, 2015
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.55 KB | None | 0 0
  1. using System;
  2. using System.Collections;
  3. using System.Configuration;
  4. using Castle.Components.DictionaryAdapter;
  5. using Castle.Facilities.TypedFactory;
  6. using Castle.MicroKernel;
  7. using Castle.MicroKernel.Context;
  8. using Castle.MicroKernel.Registration;
  9. using Castle.Windsor;
  10. using ConsoleAppStrongTypeConfig;
  11.  
  12.  
  13. namespace CastleDictionaryAdapterExample
  14. {
  15. class Program
  16. {
  17. static void Main()
  18. {
  19. GetUserSettings();
  20.  
  21. var programComponent = ContainerRegistrar.Container.Resolve<IProgramServiceConfigDependent>();
  22.  
  23. programComponent.ConfigDependentAction();
  24. programComponent = ContainerRegistrar.Container.Resolve<IProgramServiceConfigDependent>();
  25. programComponent.ConfigDependentAction();
  26.  
  27. Console.ReadLine();
  28. }
  29.  
  30. private static void GetUserSettings()
  31. {
  32. ContainerRegistrar.SetupContainer();
  33.  
  34. Console.WriteLine("Enter setting 1");
  35. Console.WriteLine();
  36.  
  37. string setting1 = Console.ReadLine();
  38.  
  39. Console.WriteLine("Enter setting 2");
  40. Console.WriteLine();
  41.  
  42. string setting2 = Console.ReadLine();
  43.  
  44. GlobalUserConsoleSettings.consoleSettings = new DictionaryAdapterFactory().GetAdapter<IConsoleSettings>(
  45. new Hashtable() {
  46. { "consoleSetting1", setting1 },
  47. { "consoleSetting2", setting2 } }
  48. );
  49. }
  50. }
  51.  
  52. public static class GlobalUserConsoleSettings
  53. {
  54. public static IConsoleSettings consoleSettings { get; set; }
  55. }
  56.  
  57. public interface IConsoleSettings
  58. {
  59. string consoleSetting1 { get; set; }
  60. int consoleSetting2 { get; set; }
  61. }
  62.  
  63. public interface IEnvironmentSettings
  64. {
  65. string environmentSetting1 { get; set; }
  66. int environmentSetting2 { get; set; }
  67.  
  68. long environmentSettingWhichChanges { get; set; }
  69. }
  70.  
  71. public interface IProgramServiceConfigDependent
  72. {
  73. void ConfigDependentAction();
  74. }
  75. class ProgramServiceConfigDependent : IProgramServiceConfigDependent
  76. {
  77. private readonly IConsoleSettings _consoleSettings;
  78. private readonly IEnvironmentSettings _envSettings;
  79.  
  80. public ProgramServiceConfigDependent(IConsoleSettings consoleSettings, IEnvironmentSettings envSettings)
  81. {
  82. _consoleSettings = consoleSettings;
  83. _envSettings = envSettings;
  84. }
  85.  
  86. public void ConfigDependentAction()
  87. {
  88. Console.WriteLine("Doing stuff.");
  89. Console.WriteLine("Console setting 1 :" + _consoleSettings.consoleSetting1);
  90. Console.WriteLine("Console setting 2 :" + _consoleSettings.consoleSetting2);
  91. Console.WriteLine("Environment setting 2 :" + _envSettings.environmentSetting1);
  92. Console.WriteLine("Environment setting 2 :" + _envSettings.environmentSetting2);
  93. Console.WriteLine("Environment setting which changes with time :" + _envSettings.environmentSettingWhichChanges);
  94. }
  95. }
  96.  
  97. public static class ContainerRegistrar
  98. {
  99. internal static WindsorContainer Container { get; set; }
  100.  
  101. public static void SetupContainer()
  102. {
  103. var container = new WindsorContainer();
  104. container.AddFacility<TypedFactoryFacility>();
  105.  
  106. container.Register(
  107. Component.For<IConsoleSettings>().UsingFactoryMethod(GetGlobalUserConsoleSettings),
  108. Component.For<IEnvironmentSettings>().UsingFactoryMethod(GetLiveEnvironmentSettings).LifestyleTransient(),
  109. Component.For<IProgramServiceConfigDependent>().ImplementedBy<ProgramServiceConfigDependent>().LifestyleTransient()
  110. );
  111.  
  112. Container = container;
  113. }
  114.  
  115. private static IConsoleSettings GetGlobalUserConsoleSettings(IKernel k, CreationContext c)
  116. {
  117. return GlobalUserConsoleSettings.consoleSettings;
  118. }
  119.  
  120. private static IEnvironmentSettings GetLiveEnvironmentSettings(IKernel k, CreationContext c)
  121. {
  122. string envSet1 = Environment.CurrentDirectory;
  123. int envSet2 = Environment.OSVersion.Version.Major;
  124.  
  125. long envSet3 = DateTime.UtcNow.Ticks;
  126. IEnvironmentSettings envSet = new DictionaryAdapterFactory().GetAdapter<IEnvironmentSettings>(
  127. new Hashtable() {
  128. { "environmentSetting1", envSet1 },
  129. { "environmentSetting2", envSet2 },
  130. { "environmentSettingWhichChanges", envSet3}}
  131. );
  132.  
  133. return envSet;
  134. }
  135. }
  136. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement