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"); }
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); }