public void TestInstantiation()
 {
     ContainerBuilder containerBuilder = new ContainerBuilder();
     containerBuilder.Register("bar", delegate(Container c) { return new Bar(); });
     containerBuilder.Register("foo", delegate(Container c) { return new Foo((Bar)c.Resolve("bar")); });
     Container container = containerBuilder.Create();
     //
     Foo foo = (Foo)container.Resolve("foo");
     //
     Asserts.AssertNotNull(foo);
     Asserts.AssertNotNull(foo.GetBar());
 }
 public void TestResolveWithParameter()
 {
     ContainerBuilder containerBuilder = new ContainerBuilder();
     containerBuilder.Register("Rabbit", delegate(Container c, object weight) { return new Rabbit((int)weight); });
     Container container = containerBuilder.Create();
     //
     Rabbit rabbit = (Rabbit)container.Resolve("Rabbit", 55);
     //
     Asserts.AssertNotNull(rabbit);
     Asserts.AssertEquals(55, rabbit.GetWeight());
 }
 public void TestInstanceIsReusedWithinContainer()
 {
     ContainerBuilder containerBuilder = new ContainerBuilder();
     containerBuilder.Register("bar", delegate(Container c) { return new Bar(); }).Reused();
     Container container = containerBuilder.Create();
     //
     object bar1 = container.Resolve("bar");
     object bar2 = container.Resolve("bar");
     //
     Asserts.AssertSame(bar1, bar2);
 }