예제 #1
0
        public void GetInstance_WithSixFactoryParams()
        {
            var fooStr = "Some Foo String";
            var di     = GetDiContainer();

            di.Register <ICalc, IBar, IFoo, string, int, string, VeryComplicated>((factory, calc, bar, foo, name, age, pass) => new VeryComplicated(calc, bar, foo, name, age, pass));

            var fooArg = new Foo {
                FooString = fooStr
            };
            var barArg = new Bar {
                BarValue = 123455
            };
            var calcArg = new CalcSimple();

            var simple = di.GetInstance <ICalc, IBar, IFoo, string, int, string, VeryComplicated>(calcArg, barArg, fooArg, "NameIs", 36363, "PASSSSSSSWWWWWW");

            Assert.NotNull(simple);
            Assert.NotNull(simple.Foo);
            Assert.NotNull(simple.Bar);
            Assert.NotNull(simple.Calc);
            Assert.AreSame(fooArg, simple.Foo);
            Assert.AreSame(barArg, simple.Bar);
            Assert.AreSame(calcArg, simple.Calc);
            Assert.IsTrue(simple.Foo.FooString == fooStr);
            Assert.IsTrue(simple.Bar.BarValue == 123455);
            Assert.IsTrue(simple.Name == "NameIs");
            Assert.IsTrue(simple.Age == 36363);
            Assert.IsTrue(simple.Password == "PASSSSSSSWWWWWW");
        }
예제 #2
0
        public void GetInstance_WithThreeFactoryParams()
        {
            var fooStr = "Some Foo String";

            var di = GetDiContainer();

            di.Register <IBar, ICalc, IFoo, ISimple>((factory, bar, calc, foo) => new Complicated(calc, bar, foo));

            var fooArg = new Foo {
                FooString = fooStr
            };
            var barArg = new Bar {
                BarValue = 123455
            };
            var calcArg = new CalcSimple();

            var simple = di.GetInstance <IBar, ICalc, IFoo, ISimple>(barArg, calcArg, fooArg);

            Assert.NotNull(simple);
            Assert.NotNull(simple.Foo);
            Assert.NotNull(simple.Bar);
            Assert.NotNull(simple.Calc);
            Assert.AreSame(fooArg, simple.Foo);
            Assert.AreSame(barArg, simple.Bar);
            Assert.AreSame(calcArg, simple.Calc);
            Assert.IsTrue(simple.Foo.FooString == fooStr);
            Assert.IsTrue(simple.Bar.BarValue == 123455);
        }