public void Injector_Misc_RequestedServiceMayStoreTheParentInjector( [Values(true, false)] bool useChildContainer, [ValueSource(nameof(Lifetimes))] Lifetime lifetime) { IServiceContainer sourceContainer = useChildContainer ? Container.CreateChild() : Container; sourceContainer.Service <IInterface_7 <IInjector>, Implementation_7_TInterface_Dependant <IInjector> >(lifetime); // // Ket kulonallo injectort hozzunk letre. // for (int i = 0; i < 2; i++) { using (IInjector injector = sourceContainer.CreateInjector()) { IInterface_7 <IInjector> svc = injector.Get <IInterface_7 <IInjector> >(); // // Mivel az IInjector nem IDisposableEx leszarmazott ezert ugy ellenorzom h dispose-olt e // hogy meghivom rajt a Get()-et. // Assert.DoesNotThrow(() => svc.Interface.Get <IInjector>()); } } }
public void Injector_Misc_RequestedServiceMayStoreItsDependencies( [Values(true, false)] bool useChildContainer, [ValueSource(nameof(Lifetimes))] Lifetime dependant) { Config.Value.Injector.StrictDI = false; Container.Instance <IDisposableEx>(new Disposable()); IServiceContainer sourceContainer = useChildContainer ? Container.CreateChild() : Container; sourceContainer.Service <IInterface_7 <IDisposableEx>, Implementation_7_TInterface_Dependant <IDisposableEx> >(dependant); // // Ket kulonallo injectort hozzunk letre. // for (int i = 0; i < 2; i++) { using (IInjector injector = sourceContainer.CreateInjector()) { IInterface_7 <IDisposableEx> svc = injector.Get <IInterface_7 <IDisposableEx> >(); Assert.That(svc.Interface.Disposed, Is.False); } } }
public async Task Lifetime_PooledService_ShouldHaveItsOwnInjector() { Container.Service <IInterface_7 <IInjector>, Implementation_7_TInterface_Dependant <IInjector> >(Lifetime.Pooled.WithCapacity(2)); using (IInjector injector1 = Container.CreateInjector()) { IInterface_7 <IInjector> svc1 = injector1.Get <IInterface_7 <IInjector> >(); Assert.That(svc1.Interface, Is.Not.SameAs(injector1)); Assert.That(svc1.Interface.UnderlyingContainer.Parent, Is.SameAs(Container)); await Task.Run(() => { using (IInjector injector2 = Container.CreateInjector()) { IInterface_7 <IInjector> svc2 = injector2.Get <IInterface_7 <IInjector> >(); Assert.That(svc2.Interface, Is.Not.SameAs(injector2)); Assert.That(svc2.Interface.UnderlyingContainer.Parent, Is.SameAs(Container)); Assert.AreNotSame(svc1.Interface, svc2.Interface); } }); } }
public void Lifetime_PooledService_MayHaveRegularDependency() { Container .Service <IInterface_1, Implementation_1>(Lifetime.Transient) .Service <IInterface_7 <IInterface_1>, Implementation_7_TInterface_Dependant <IInterface_1> >(Lifetime.Pooled); using (IInjector injector = Container.CreateInjector()) { IInterface_7 <IInterface_1> svc = injector.Get <IInterface_7 <IInterface_1> >(); Assert.That(svc.Interface, Is.Not.Null); } }
public void Lifetime_SingletonService_ShouldHaveItsOwnInjector() { Container .Service <IInterface_7 <IInjector>, Implementation_7_TInterface_Dependant <IInjector> >(Lifetime.Singleton) .Service <IInterface_7 <IInjector>, Implementation_7_TInterface_Dependant <IInjector> >("named", Lifetime.Singleton); using (IInjector injector = Container.CreateInjector()) { IInterface_7 <IInjector> svc = injector.Get <IInterface_7 <IInjector> >("named"); Assert.That(svc.Interface, Is.Not.SameAs(injector)); Assert.That(svc.Interface.UnderlyingContainer.Parent, Is.SameAs(Container)); Assert.That(svc.Interface.Get <IInterface_7 <IInjector> >().Interface, Is.Not.SameAs(injector)); Assert.That(svc.Interface.Get <IInterface_7 <IInjector> >().Interface.UnderlyingContainer.Parent, Is.SameAs(Container)); Assert.That(svc.Interface.Get <IInterface_7 <IInjector> >().Interface, Is.Not.SameAs(svc.Interface)); } }