コード例 #1
0
ファイル: NCopContainerTest.cs プロジェクト: sagifogel/NCop
        public void Resolve_UsingAsSingletonExpressionRegistrationWithAutoFactory_ReturnsTheSameObjectForDifferentResolveCalls() {
            var container = new NCopContainer(registry => {
                registry.Register<Foo>().AsSingleton();
            });

            var instance = container.Resolve<Foo>();
            var instatance2 = container.Resolve<Foo>();

            Assert.AreSame(instance, instatance2);
        }
コード例 #2
0
ファイル: NCopContainerTest.cs プロジェクト: arieldeil/NCop
        public void Resolve_UsingAsSingletonExpressionRegistrationWithFactory_ReturnsTheSameObjectForDifferentResolveCalls()
        {
            var container = new NCopContainer(registry => {
                registry.Register <Foo>((reg) => new Foo()).AsSingleton();
            });

            var instance    = container.Resolve <Foo>();
            var instatance2 = container.Resolve <Foo>();

            Assert.AreSame(instance, instatance2);
        }
コード例 #3
0
ファイル: NCopContainerTest.cs プロジェクト: arieldeil/NCop
        public void Resolve_UsingAutoFactoryAndCastingWithAsExpressionAndAfterThatUsingTheAsSingletonExpressionRegistration_ReturnsTheSameObjectForDifferentResolveCalls()
        {
            var container = new NCopContainer(registry => {
                registry.Register <IFoo>().As <Foo>().AsSingleton();
            });

            var instance    = container.Resolve <IFoo>();
            var instatance2 = container.Resolve <IFoo>();

            Assert.AreSame(instance, instatance2);
        }
コード例 #4
0
        public void Resolve_UsingAsPerHttpRequestExpressionRegistrationWhenUsingTwoDiffrentContext_ReturnsDiffrentInstancesPerHttpContextInstance()
        {
            Foo foo       = null;
            var container = new NCopContainer(registry => {
                registry.Register <Foo>().AsSingleton().PerHttpRequest();
            });

            SetHttpContext();
            foo = container.Resolve <Foo>();
            Assert.AreEqual(foo, container.Resolve <Foo>());
            SetHttpContext();
            Assert.AreNotEqual(foo, container.Resolve <Foo>());
        }
コード例 #5
0
ファイル: NCopContainerTest.cs プロジェクト: arieldeil/NCop
        public void ResolveInChildContainerAndInParentContainer_UsingAutoRegistrationInParentContainerAsSingletoneReusedWithinHierarchy_ReturnsNotTheSameInstance()
        {
            var container = new NCopContainer(registry => {
                registry.Register <Foo>().AsSingleton().ReusedWithinContainer();
            });

            var childContainer = container.CreateChildContainer(registry => { });
            var instance1      = container.Resolve <Foo>();
            var instance2      = container.Resolve <Foo>();
            var instance3      = childContainer.Resolve <Foo>();
            var instance4      = childContainer.Resolve <Foo>();

            Assert.AreSame(instance1, instance2);
            Assert.AreNotSame(instance1, instance3);
            Assert.AreSame(instance3, instance4);
        }
コード例 #6
0
        public async Task Resolve_UsingAsPerThreadSingletonExpressionRegistrationWithAutoFactory_ReturnsDiffrentOjectsForDiffrentThreadsAndTheSameObjectForDifferentResolveCallsOnTheSameThread()
        {
            Foo foo1 = null;
            Foo foo2 = null;

            var container = new NCopContainer(registry => {
                registry.Register <Foo>().AsSingleton().PerThread();
            });

            foo1 = await Task.Factory.StartNew(() => container.Resolve <Foo>());

            foo2 = await Task.Factory.StartNew(() => container.Resolve <Foo>());

            Assert.AreNotEqual(foo1, foo2);
            Assert.AreEqual(container.Resolve <Foo>(), container.Resolve <Foo>());
        }
コード例 #7
0
        public async Task Resolve_UsingAsPerHybridRequestExpressionRegistrationWhenHttpContextIsNotAvailable_ReturnsTheSameInstancePerThreadRequest()
        {
            Foo           foo       = null;
            Foo           foo2      = null;
            NCopContainer container = null;

            container = new NCopContainer(registry => {
                registry.Register <Foo>().AsSingleton().PerHybridRequest();
            });

            foo = container.Resolve <Foo>();
            Assert.AreEqual(foo, container.Resolve <Foo>());
            foo2 = await Task.Factory.StartNew(() => container.Resolve <Foo>());

            Assert.AreEqual(foo, foo2);
        }
コード例 #8
0
ファイル: NCopContainerTest.cs プロジェクト: sagifogel/NCop
        public void Resolve_UsingAutoFactoryOfInterface_ThrowsRegistrationException() {
            var container = new NCopContainer(registry => {
                registry.Register<IFoo>();
            });

            var instance = container.Resolve<IFoo>();
        }
コード例 #9
0
        public void Resolve_UsingAutoFactoryOfInterfaceThatBindsToSelf_ThrowsRegistrationException()
        {
            var container = new NCopContainer(registry => {
                registry.Register <IFoo>().ToSelf();
            });

            container.Resolve <IFoo>();
        }
コード例 #10
0
ファイル: NCopContainerTest.cs プロジェクト: sagifogel/NCop
        public void ResolveOfDependetType_UsingFactoryThatCallsResolveOfDependencyObject_ReturnsTheResolvedInstance() {
            var container = new NCopContainer(registry => {
                registry.Register<Foo>();
                registry.Register<IBar>(r => new Bar(r.Resolve<Foo>()));
            });

            Assert.IsNotNull(container.Resolve<IBar>());
        }
コード例 #11
0
ファイル: NCopContainerTest.cs プロジェクト: arieldeil/NCop
        public void Resolve_UsingAutoFactoryOfInterface_ThrowsRegistrationException()
        {
            var container = new NCopContainer(registry => {
                registry.Register <IFoo>();
            });

            var instance = container.Resolve <IFoo>();
        }
コード例 #12
0
        public void Resolve_UsingAsPerHttpRequestExpressionRegistrationWhenThereIsNoHttpContext_ThrowsLifetimeStragtegyException()
        {
            var container = new NCopContainer(registry => {
                registry.Register <Foo>().AsSingleton().PerHttpRequest();
            });

            container.Resolve <Foo>();
        }
コード例 #13
0
ファイル: NCopContainerTest.cs プロジェクト: sagifogel/NCop
        public void Resolve_UsingAutoFactoryAndCastingUsingTheAsExpresion_ReturnsTheResolvedInstance() {
            var container = new NCopContainer(registry => {
                registry.Register<IFoo>().From<Foo>();
            });

            var instance = container.Resolve<IFoo>();

            Assert.IsNotNull(instance);
        }
コード例 #14
0
ファイル: NCopContainerTest.cs プロジェクト: arieldeil/NCop
        public void ResolveOfDependetType_UsingFactoryThatCallsResolveOfDependencyObject_ReturnsTheResolvedInstance()
        {
            var container = new NCopContainer(registry => {
                registry.Register <Foo>();
                registry.Register <IBar>((r) => new Bar(r.Resolve <Foo>()));
            });

            Assert.IsNotNull(container.Resolve <IBar>());
        }
コード例 #15
0
ファイル: NCopContainerTest.cs プロジェクト: arieldeil/NCop
        public void AutoRegister_OfTypeThatHasMoreThanOneConstructorAndWithoutDependencyAttribute_ThrowsRegistrationException()
        {
            var container = new NCopContainer(registry => {
                registry.Register <IFoo>().As <Foo>();
                registry.RegisterAuto <AmbiguousConstructor>();
            });

            var instance = container.Resolve <AmbiguousConstructor>();
        }
コード例 #16
0
ファイル: NCopContainerTest.cs プロジェクト: arieldeil/NCop
        public void Resolve_UsingAutoFactoryAndCastingUsingTheAsExpresion_ReturnsTheResolvedInstance()
        {
            var container = new NCopContainer(registry => {
                registry.Register <IFoo>().As <Foo>();
            });

            var instance = container.Resolve <IFoo>();

            Assert.IsNotNull(instance);
        }
コード例 #17
0
ファイル: NCopContainerTest.cs プロジェクト: sagifogel/NCop
        public void Resolve_UsingFactoryWithTypedArgument_ReturnsTheResolvedInstanceThatHoldsTheResultOfTypedArgument() {
            var container = new NCopContainer(registry => {
                registry.Register<IFoo, string>((r, name) => new Foo(name));
            });

            var instance = container.Resolve<string, IFoo>("Test");

            Assert.IsNotNull(instance);
            Assert.AreEqual(instance.Name, "Test");
        }
コード例 #18
0
ファイル: NCopContainerTest.cs プロジェクト: sagifogel/NCop
        public void Resolve_UsingNamedExpressionOfSpecificTypeAndAutoWithoutNameOfTheSameType_ReturnsDifferentInstancesOfTheSameType() {
            var container = new NCopContainer(registry => {
                registry.Register<Foo>().Named("NCop");
                registry.Register<Foo>();
            });

            var instance = container.Resolve<Foo>();
            var namedInstance = container.ResolveNamed<Foo>("NCop");

            Assert.AreNotSame(namedInstance, instance);
        }
コード例 #19
0
ファイル: NCopContainerTest.cs プロジェクト: arieldeil/NCop
        public void Resolve_UsingAutoFactoryThatBindsToSelf_ReturnsTheResolvedInstance()
        {
            var container = new NCopContainer(registry => {
                registry.Register <Foo>().ToSelf();
            });

            var instance = container.Resolve <Foo>();

            Assert.IsNotNull(instance);
            Assert.IsInstanceOfType(instance, typeof(Foo));
        }
コード例 #20
0
ファイル: NCopContainerTest.cs プロジェクト: arieldeil/NCop
        public void AutoRegister_WithPropertyDependency_ReturnsTheResolvedInstanceFilledWithTheAutoResolvedProperty()
        {
            var container = new NCopContainer(registry => {
                registry.Register <IFoo>().As <Foo>();
                registry.RegisterAuto <PropertyDependency>();
            });

            var instance = container.Resolve <PropertyDependency>();

            Assert.IsNotNull(instance.Foo);
        }
コード例 #21
0
ファイル: NCopContainerTest.cs プロジェクト: arieldeil/NCop
        public void AutoRegister_WithConstructorDependencyThatHasOneDependentArgument_ReturnsTheResolvedInstanceFilledWithTheDependentArgument()
        {
            var container = new NCopContainer(registry => {
                registry.Register <IFoo>().As <Foo>();
                registry.RegisterAuto <CtorDependency>();
            });

            var instance = container.Resolve <CtorDependency>();

            Assert.IsNotNull(instance.Foo);
        }
コード例 #22
0
ファイル: NCopContainerTest.cs プロジェクト: arieldeil/NCop
        public void Resolve_UsingFactoryWithTypedArgument_ReturnsTheResolvedInstanceThatHoldsTheResultOfTypedArgument()
        {
            var container = new NCopContainer(registry => {
                registry.Register <IFoo, string>((r, name) => new Foo(name));
            });

            var instance = container.Resolve <string, IFoo>("Test");

            Assert.IsNotNull(instance);
            Assert.AreEqual(instance.Name, "Test");
        }
コード例 #23
0
ファイル: NCopContainerTest.cs プロジェクト: arieldeil/NCop
        public void AutoRegister_OfInterfaceAndCastingWithAsExpressionToConcreteTypeThatHasOneDependentProperty_ReturnsResolvedInstanceWithFilledProperty()
        {
            var container = new NCopContainer(registry => {
                registry.Register <Baz>().ToSelf();
                registry.RegisterAuto <IFoo>().As <Boo>();
            });

            var instance = container.Resolve <IFoo>() as Boo;

            Assert.IsNotNull(instance);
            Assert.IsNotNull(instance.Baz);
        }
コード例 #24
0
ファイル: NCopContainerTest.cs プロジェクト: arieldeil/NCop
        public void Resolve_UsingNamedExpressionOfSpecificTypeAndAutoWithoutNameOfTheSameType_ReturnsDifferentInstancesOfTheSameType()
        {
            var container = new NCopContainer(registry => {
                registry.Register <Foo>().Named("NCop");
                registry.Register <Foo>();
            });

            var instance      = container.Resolve <Foo>();
            var namedInstance = container.ResolveNamed <Foo>("NCop");

            Assert.AreNotSame(namedInstance, instance);
        }
コード例 #25
0
ファイル: NCopContainerTest.cs プロジェクト: arieldeil/NCop
        public void ResolveInChildContainerAndInParentContainer_UsingSingletonRegistrationInParentContainer_ReturnsTheSameInstance()
        {
            var container = new NCopContainer(registry => {
                registry.Register <Foo>().AsSingleton();
            });

            var childContainer = container.CreateChildContainer(registry => { });
            var instance       = container.Resolve <Foo>();
            var instance2      = childContainer.Resolve <Foo>();

            Assert.AreSame(instance, instance2);
        }
コード例 #26
0
ファイル: NCopContainerTest.cs プロジェクト: arieldeil/NCop
        public void AutoRegister_OfTypeThatHasTwoDependentPropertiesThatOneOfThemIsAnnotatedWithIgnoreDependency_ReturnsResolvedInstanceWithOnlyOneDependentProperty()
        {
            var container = new NCopContainer(registry => {
                registry.Register <IFoo>().As <Foo>();
                registry.RegisterAuto <IgnoreDependencyClass>();
            });

            var instance = container.Resolve <IgnoreDependencyClass>();

            Assert.IsNotNull(instance.Injected);
            Assert.IsNull(instance.Ignored);
        }
コード例 #27
0
ファイル: NCopContainerTest.cs プロジェクト: arieldeil/NCop
        public void DisposeOfContainer_OfDisposableObjectWhichIsOwnedExternally_ReturnsNotDispsoedIndication()
        {
            var container = new NCopContainer(registry => {
                registry.Register <Foo>().OwnedExternally();
            });

            var instance = container.Resolve <Foo>();

            Assert.IsFalse(instance.IsDisposed);
            container.Dispose();
            Assert.IsFalse(instance.IsDisposed);
        }
コード例 #28
0
ファイル: NCopContainerTest.cs プロジェクト: arieldeil/NCop
        public void AutoRegister_OfTypeThatHasMoreThanOneConstructorWithDependencyAttribute_ReturnsResolvedInstanceAndDontThrowsRegistrationException()
        {
            var container = new NCopContainer(registry => {
                registry.Register <IFoo>().As <Foo>();
                registry.RegisterAuto <AmbiguousConstructorFixedWithDependencyAttribute>();
            });

            var instance = container.Resolve <AmbiguousConstructorFixedWithDependencyAttribute>();

            Assert.IsNotNull(instance);
            Assert.IsNotNull(instance.Foo);
        }
コード例 #29
0
ファイル: NCopContainerTest.cs プロジェクト: arieldeil/NCop
        public void AutoRegister_OfTypeThatHasTwoPropertiesThatOneOfThemIsDependentAndTheOtherFilledByDependentConstructor_ReturnsResolvedInstanceWithBothPropertiesFilled()
        {
            var container = new NCopContainer(registry => {
                registry.Register <IFoo>().As <Foo>().AsSingleton();
                registry.RegisterAuto <Bar>();
            });

            var instance = container.Resolve <Bar>();

            Assert.IsNotNull(instance.ByCtor);
            Assert.IsNotNull(instance.ByProperty);
            Assert.AreSame(instance.ByCtor, instance.ByProperty);
        }
コード例 #30
0
ファイル: NCopContainerTest.cs プロジェクト: sagifogel/NCop
        public void AutoRegister_WithPropertyDependency_ReturnsTheResolvedInstanceFilledWithTheAutoResolvedProperty() {
            var container = new NCopContainer(registry => {
                registry.Register<IFoo>().From<Foo>();
                registry.RegisterAuto<PropertyDependency>();
            });

            var instance = container.Resolve<PropertyDependency>();

            Assert.IsNotNull(instance.Foo);
        }
コード例 #31
0
ファイル: NCopContainerTest.cs プロジェクト: sagifogel/NCop
        public void AutoRegister_WithConstructorDependencyThatHasOneDependentArgument_ReturnsTheResolvedInstanceFilledWithTheDependentArgument() {
            var container = new NCopContainer(registry => {
                registry.Register<IFoo>().From<Foo>();
                registry.RegisterAuto<CtorDependency>();
            });

            var instance = container.Resolve<CtorDependency>();

            Assert.IsNotNull(instance.Foo);
        }
コード例 #32
0
ファイル: NCopContainerTest.cs プロジェクト: sagifogel/NCop
        public void AutoRegister_OfTypeThatHasMoreThanOneConstructorAndWithoutDependencyAttribute_ThrowsRegistrationException() {
            var container = new NCopContainer(registry => {
                registry.Register<IFoo>().From<Foo>();
                registry.RegisterAuto<AmbiguousConstructor>();
            });

            var instance = container.Resolve<AmbiguousConstructor>();
        }
コード例 #33
0
ファイル: NCopContainerTest.cs プロジェクト: sagifogel/NCop
        public void AutoRegister_OfTypeThatHasMoreThanOneConstructorWithDependencyAttribute_ReturnsResolvedInstanceAndDontThrowsRegistrationException() {
            var container = new NCopContainer(registry => {
                registry.Register<IFoo>().From<Foo>();
                registry.RegisterAuto<AmbiguousConstructorFixedWithDependencyAttribute>();
            });

            var instance = container.Resolve<AmbiguousConstructorFixedWithDependencyAttribute>();

            Assert.IsNotNull(instance);
            Assert.IsNotNull(instance.Foo);
        }
コード例 #34
0
ファイル: NCopContainerTest.cs プロジェクト: sagifogel/NCop
        public void AutoRegister_OfInterfaceAndCastingWithAsExpressionToConcreteTypeThatHasOneDependentProperty_ReturnsResolvedInstanceWithFilledProperty() {
            var container = new NCopContainer(registry => {
                registry.Register<Baz>().ToSelf();
                registry.RegisterAuto<IFoo>().From<Boo>();
            });

            var instance = container.Resolve<IFoo>() as Boo;

            Assert.IsNotNull(instance);
            Assert.IsNotNull(instance.Baz);
        }
コード例 #35
0
ファイル: NCopContainerTest.cs プロジェクト: sagifogel/NCop
        public void AutoRegister_OfTypeThatHasTwoDependentPropertiesThatOneOfThemIsAnnotatedWithIgnoreDependency_ReturnsResolvedInstanceWithOnlyOneDependentProperty() {
            var container = new NCopContainer(registry => {
                registry.Register<IFoo>().From<Foo>();
                registry.RegisterAuto<IgnoreDependencyClass>();
            });

            var instance = container.Resolve<IgnoreDependencyClass>();

            Assert.IsNotNull(instance.Injected);
            Assert.IsNull(instance.Ignored);
        }
コード例 #36
0
ファイル: NCopContainerTest.cs プロジェクト: arieldeil/NCop
 public void TryResolve_NotRegisteredService_ThrowsRegistrationException()
 {
     var container = new NCopContainer(registry => { });
     var instance  = container.Resolve <IFoo>();
 }
コード例 #37
0
ファイル: NCopContainerTest.cs プロジェクト: sagifogel/NCop
        public void AutoRegister_OfTypeThatHasTwoPropertiesThatOneOfThemIsDependentAndTheOtherFilledByDependentConstructor_ReturnsResolvedInstanceWithBothPropertiesFilled() {
            var container = new NCopContainer(registry => {
                registry.Register<IFoo>().From<Foo>().AsSingleton();
                registry.RegisterAuto<Bar>();
            });

            var instance = container.Resolve<Bar>();

            Assert.IsNotNull(instance.ByCtor);
            Assert.IsNotNull(instance.ByProperty);
            Assert.AreSame(instance.ByCtor, instance.ByProperty);
        }
コード例 #38
0
ファイル: NCopContainerTest.cs プロジェクト: sagifogel/NCop
        public void ResolveInChildContainerAndInParentContainer_UsingAutoRegistrationInParentContainerAsSingletoneReusedWithinHierarchy_ReturnsNotTheSameInstance() {
            var container = new NCopContainer(registry => {
                registry.Register<Foo>().AsSingleton().WithinContainer();
            });

            var childContainer = container.CreateChildContainer(registry => { });
            var instance1 = container.Resolve<Foo>();
            var instance2 = container.Resolve<Foo>();
            var instance3 = childContainer.Resolve<Foo>();
            var instance4 = childContainer.Resolve<Foo>();

            Assert.AreSame(instance1, instance2);
            Assert.AreNotSame(instance1, instance3);
            Assert.AreSame(instance3, instance4);
        }
コード例 #39
0
ファイル: NCopContainerTest.cs プロジェクト: sagifogel/NCop
        public void Resolve_UsingAutoFactoryThatBindsToSelf_ReturnsTheResolvedInstance() {
            var container = new NCopContainer(registry => {
                registry.Register<Foo>().ToSelf();
            });

            var instance = container.Resolve<Foo>();

            Assert.IsNotNull(instance);
            Assert.IsInstanceOfType(instance, typeof(Foo));
        }
コード例 #40
0
ファイル: NCopContainerTest.cs プロジェクト: sagifogel/NCop
        public void DisposeOfContainer_OfDisposableObjectWhichIsOwnedExternally_ReturnsNotDispsoedIndication() {
            var container = new NCopContainer(registry => {
                registry.Register<Foo>().OwnedExternally();
            });

            var instance = container.Resolve<Foo>();

            Assert.IsFalse(instance.IsDisposed);
            container.Dispose();
            Assert.IsFalse(instance.IsDisposed);
        }
コード例 #41
0
ファイル: NCopContainerTest.cs プロジェクト: sagifogel/NCop
        public void Resolve_UsingAsPerHybridRequestExpressionRegistrationWhenHttpContextIsAvailable_ReturnsDiffrentInstancesPerHttpContextInstance() {
            Foo foo = null;
            NCopContainer container = null;

            SetHttpContext();
            container = new NCopContainer(registry => {
                registry.Register<Foo>().AsSingleton().PerHybridRequest();
            });

            foo = container.Resolve<Foo>();
            Assert.AreEqual(foo, container.Resolve<Foo>());
            SetHttpContext();
            Assert.AreNotEqual(foo, container.Resolve<Foo>());
        }
コード例 #42
0
ファイル: NCopContainerTest.cs プロジェクト: sagifogel/NCop
        public void Resolve_UsingAutoFactoryOfInterfaceThatBindsToSelf_ThrowsRegistrationException() {
            var container = new NCopContainer(registry => {
                registry.Register<IFoo>().ToSelf();
            });

            container.Resolve<IFoo>();
        }
コード例 #43
0
ファイル: NCopContainerTest.cs プロジェクト: sagifogel/NCop
        public void Resolve_UsingAsPerHttpRequestExpressionRegistrationWhenThereIsNoHttpContext_ThrowsLifetimeStragtegyException() {
            var container = new NCopContainer(registry => {
                registry.Register<Foo>().AsSingleton().PerHttpRequest();
            });

            container.Resolve<Foo>();
        }
コード例 #44
0
ファイル: NCopContainerTest.cs プロジェクト: sagifogel/NCop
 public void TryResolve_NotRegisteredService_ThrowsRegistrationException() {
     var container = new NCopContainer(registry => { });
     container.Resolve<IFoo>();
 }
コード例 #45
0
ファイル: NCopContainerTest.cs プロジェクト: sagifogel/NCop
        public async Task Resolve_UsingAsPerHybridRequestExpressionRegistrationWhenHttpContextIsNotAvailable_ReturnsTheSameInstancePerThreadRequest() {
            Foo foo = null;
            Foo foo2 = null;
            NCopContainer container = null;

            container = new NCopContainer(registry => {
                registry.Register<Foo>().AsSingleton().PerHybridRequest();
            });

            foo = container.Resolve<Foo>();
            Assert.AreEqual(foo, container.Resolve<Foo>());
            foo2 = await Task.Factory.StartNew(() => container.Resolve<Foo>());
            Assert.AreEqual(foo, foo2);
        }
コード例 #46
0
ファイル: NCopContainerTest.cs プロジェクト: sagifogel/NCop
        public void Resolve_UsingAutoFactoryAndCastingWithAsExpressionAndAfterThatUsingTheAsSingletonExpressionRegistration_ReturnsTheSameObjectForDifferentResolveCalls() {
            var container = new NCopContainer(registry => {
                registry.Register<IFoo>().From<Foo>().AsSingleton();
            });

            var instance = container.Resolve<IFoo>();
            var instatance2 = container.Resolve<IFoo>();

            Assert.AreSame(instance, instatance2);
        }
コード例 #47
0
 public TService Resolve <TService>()
 {
     return(container.Resolve <TService>());
 }
コード例 #48
0
ファイル: NCopContainerTest.cs プロジェクト: sagifogel/NCop
        public async Task Resolve_UsingAsPerThreadSingletonExpressionRegistrationWithAutoFactory_ReturnsDiffrentOjectsForDiffrentThreadsAndTheSameObjectForDifferentResolveCallsOnTheSameThread() {
            Foo foo1 = null;
            Foo foo2 = null;

            var container = new NCopContainer(registry => {
                registry.Register<Foo>().AsSingleton().PerThread();
            });

            foo1 = await Task.Factory.StartNew(() => container.Resolve<Foo>());
            foo2 = await Task.Factory.StartNew(() => container.Resolve<Foo>());

            Assert.AreNotEqual(foo1, foo2);
            Assert.AreEqual(container.Resolve<Foo>(), container.Resolve<Foo>());
        }
コード例 #49
0
ファイル: NCopContainerTest.cs プロジェクト: sagifogel/NCop
        public void ResolveInChildContainerAndInParentContainer_UsingSingletonRegistrationInParentContainer_ReturnsTheSameInstance() {
            var container = new NCopContainer(registry => {
                registry.Register<Foo>().AsSingleton().WithinHierarchy();
            });

            var childContainer = container.CreateChildContainer(registry => { });
            var instance = container.Resolve<Foo>();
            var instance2 = childContainer.Resolve<Foo>();

            Assert.AreSame(instance, instance2);
        }