public void It_should_resolve_complex_types_with_parameterized_ctors_honoring_sigletons_registered_across_scopes() { var outerDisposable = new Disposable(); var innerDisposable = new Disposable(); var otherComplex = new OtherComplex(new Disposable()); using (var container = CreateContainer()) { using (var outerScope = container.BeginScope(c => { c.RegisterInstance(outerDisposable, new RegistrationOptions()); c.RegisterInstance(otherComplex, new RegistrationOptions()); })) { using (var innerScope = outerScope.BeginScope(c => c.RegisterInstance(innerDisposable, new RegistrationOptions()))) { var complex = innerScope.Resolve <Complex>(); Assert.That(complex, Is.Not.Null); Assert.That(complex.Disposable, Is.SameAs(innerDisposable)); Assert.That(complex.OtherComplex, Is.SameAs(otherComplex)); } } } }
public Complex(Disposable disposable, OtherComplex otherComplex, Struct value) { Disposable = disposable; OtherComplex = otherComplex; Value = value; }