Beispiel #1
0
        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>());
                }
            }
        }
Beispiel #2
0
        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);
                }
            }
        }
Beispiel #3
0
        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);
                    }
                });
            }
        }
Beispiel #4
0
        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);
            }
        }
Beispiel #5
0
        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));
            }
        }