Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Foo : IFoo
- {
- private readonly IDependency Dependency;
- public Foo(IDependency dependency)
- {
- Dependency = dependency;
- }
- public void Execute()
- {
- Console.WriteLine("I'm using {0}", Dependency.Name);
- }
- }
- class Container : IContainer
- {
- private readonly IFoo _Foo;
- private readonly IBar _Bar;
- private readonly IBaz _Baz;
- public Container(IFoo foo, IBar bar, IBaz baz)
- {
- _Foo = foo;
- _Bar = bar;
- _Baz = baz;
- }
- }
- IDependency dependency = new Dependency();
- IFoo foo = new Foo(dependency);
- IBar bar = new Bar(dependency);
- IBaz baz = new Baz(dependency);
- IContainer container = new Container(foo, bar, baz);
- IContainer container = new Container(new Foo(new Dependency()), new Bar(new Dependency()), new Baz(new Dependency()));
- var dep1 = new Dependency();
- var container1 = new IContainer(new Foo(dep1), new Bar(dep1), new Baz(dep1));
- var dep2 = new Dependency();
- var container2 = new IContainer(new Foo(dep2), new Bar(dep2), new Baz(dep2));
- IKernel nKernel = new StandardKernel();
- nKernel.Bind<IFoo>().To<Foo>();
- nKernel.Bind<IBar>().To<Bar>();
- nKernel.Bind<IBaz>().To<Baz>();
- nKernel.Bind<IContainer>().To<Container>();
- nKernel.Bind<IDependency>().ToConstant(new Dependency());
- Container c = nKernel.Get<Container>();
- //utilize the container...
- nKernel.Unbind<IDependency>();
- nKernel.Bind<IDependency>().ToConstant(new Dependency());
- c = nKernel.Get<Container>();
- //utilize the container...
- kernel.Bind<IContainer>().ToMethod(context =>
- {
- IDependency dependency = new Dep();
- IFoo foo = new Foo(dependency);
- IBar bar = new Bar(dependency);
- IBaz baz = new Baz(dependency);
- return new Container(foo, bar, baz);
- });
- public class Container : IContainer
- {
- private IFoo _foo;
- private IBar _bar;
- private IBaz _baz;
- public Container(IContainerDependencies dependencies)
- {
- _foo = dependencies.Foo;
- _bar = dependencies.Bar;
- _baz = dependencies.Baz;
- }
- }
- public class ContainerDependencies : IContainerDependencies
- {
- public ContainerDependencies(IFoo foo, IBar bar, IBaz baz)
- {
- Foo = foo;
- Bar = bar;
- Baz = baz;
- }
- public IFoo Foo { get; set; }
- public IBar Bar { get; set; }
- public IBaz Baz { get; set; }
- }
- public interface IContainerDependencies
- {
- IFoo Foo { get; set; }
- IBar Bar { get; set; }
- IBaz Baz { get; set; }
- }
- var kernel = new StandardKernel();
- kernel.Bind<IFoo>().To<Foo>();
- kernel.Bind<IBar>().To<Bar>();
- kernel.Bind<IBaz>().To<Baz>();
- kernel.Bind<IContainerDependencies>().ToMethod(context =>
- {
- context.Kernel.Unbind<IDependency>();
- context.Kernel.Bind<IDependency>().ToConstant(new Dep());
- return context.Kernel.Get<ContainerDependencies>();
- });
- kernel.Bind<IContainer>().To<Container>();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement