Advertisement
Guest User

Untitled

a guest
Feb 21st, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.00 KB | None | 0 0
  1. class Foo : IFoo
  2. {
  3. private readonly IDependency Dependency;
  4.  
  5. public Foo(IDependency dependency)
  6. {
  7. Dependency = dependency;
  8. }
  9.  
  10. public void Execute()
  11. {
  12. Console.WriteLine("I'm using {0}", Dependency.Name);
  13. }
  14. }
  15.  
  16. class Container : IContainer
  17. {
  18. private readonly IFoo _Foo;
  19. private readonly IBar _Bar;
  20. private readonly IBaz _Baz;
  21.  
  22. public Container(IFoo foo, IBar bar, IBaz baz)
  23. {
  24. _Foo = foo;
  25. _Bar = bar;
  26. _Baz = baz;
  27. }
  28. }
  29.  
  30. IDependency dependency = new Dependency();
  31. IFoo foo = new Foo(dependency);
  32. IBar bar = new Bar(dependency);
  33. IBaz baz = new Baz(dependency);
  34. IContainer container = new Container(foo, bar, baz);
  35.  
  36. IContainer container = new Container(new Foo(new Dependency()), new Bar(new Dependency()), new Baz(new Dependency()));
  37.  
  38. var dep1 = new Dependency();
  39. var container1 = new IContainer(new Foo(dep1), new Bar(dep1), new Baz(dep1));
  40.  
  41. var dep2 = new Dependency();
  42. var container2 = new IContainer(new Foo(dep2), new Bar(dep2), new Baz(dep2));
  43.  
  44. IKernel nKernel = new StandardKernel();
  45.  
  46. nKernel.Bind<IFoo>().To<Foo>();
  47. nKernel.Bind<IBar>().To<Bar>();
  48. nKernel.Bind<IBaz>().To<Baz>();
  49. nKernel.Bind<IContainer>().To<Container>();
  50.  
  51. nKernel.Bind<IDependency>().ToConstant(new Dependency());
  52.  
  53. Container c = nKernel.Get<Container>();
  54. //utilize the container...
  55.  
  56. nKernel.Unbind<IDependency>();
  57. nKernel.Bind<IDependency>().ToConstant(new Dependency());
  58.  
  59. c = nKernel.Get<Container>();
  60. //utilize the container...
  61.  
  62. kernel.Bind<IContainer>().ToMethod(context =>
  63. {
  64. IDependency dependency = new Dep();
  65. IFoo foo = new Foo(dependency);
  66. IBar bar = new Bar(dependency);
  67. IBaz baz = new Baz(dependency);
  68. return new Container(foo, bar, baz);
  69. });
  70.  
  71. public class Container : IContainer
  72. {
  73. private IFoo _foo;
  74. private IBar _bar;
  75. private IBaz _baz;
  76.  
  77.  
  78. public Container(IContainerDependencies dependencies)
  79. {
  80. _foo = dependencies.Foo;
  81. _bar = dependencies.Bar;
  82. _baz = dependencies.Baz;
  83. }
  84. }
  85.  
  86. public class ContainerDependencies : IContainerDependencies
  87. {
  88. public ContainerDependencies(IFoo foo, IBar bar, IBaz baz)
  89. {
  90. Foo = foo;
  91. Bar = bar;
  92. Baz = baz;
  93. }
  94.  
  95. public IFoo Foo { get; set; }
  96. public IBar Bar { get; set; }
  97. public IBaz Baz { get; set; }
  98. }
  99.  
  100. public interface IContainerDependencies
  101. {
  102. IFoo Foo { get; set; }
  103. IBar Bar { get; set; }
  104. IBaz Baz { get; set; }
  105. }
  106.  
  107. var kernel = new StandardKernel();
  108. kernel.Bind<IFoo>().To<Foo>();
  109. kernel.Bind<IBar>().To<Bar>();
  110. kernel.Bind<IBaz>().To<Baz>();
  111. kernel.Bind<IContainerDependencies>().ToMethod(context =>
  112. {
  113. context.Kernel.Unbind<IDependency>();
  114. context.Kernel.Bind<IDependency>().ToConstant(new Dep());
  115. return context.Kernel.Get<ContainerDependencies>();
  116. });
  117. kernel.Bind<IContainer>().To<Container>();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement