示例#1
0
        public async Task C_test()
        {
            var container = CreateContainer();

            OuterDependency  outer1 = null, outer2 = null;
            InnerDependency  inner1 = null, inner2 = null;
            SharedDependency shared1 = null, shared2 = null;


            var t1 = Task.Run(() =>
            {
                using (container.BeginScope())
                {
                    outer1  = container.Resolve <OuterDependency>();
                    inner1  = outer1.Inner;
                    shared1 = outer1.Shared;
                }
            });

            var t2 = Task.Run(() =>
            {
                using (container.BeginScope())
                {
                    outer2  = container.Resolve <OuterDependency>();
                    inner2  = outer2.Inner;
                    shared2 = outer2.Shared;
                }
            });

            await Task.WhenAll(t1, t2);

            Assert.That(outer1, Is.Not.SameAs(outer2));
            Assert.That(inner1, Is.Not.SameAs(inner2));
            Assert.That(shared1, Is.SameAs(shared2));
        }
        public void Register(IServiceCollection services)
        {
            var sharedDependency = new SharedDependency();

            sharedDependency.Register(services);
            var businessLogicDependency = new BusinessLogicDependency();

            businessLogicDependency.Register(services);
            services.AddTransient <IMessagesBusinessLogic, MessagesBusinessLogic>();
            services.AddTransient <IMessageValidator, MessageValidator>();
            services.AddTransient <IMessagesService, MessagesService>();
        }
示例#3
0
 public OuterDependency(InnerDependency inner, SharedDependency shared)
 {
     Inner  = inner;
     Shared = shared;
 }
示例#4
0
 public OuterDependency(InnerDependency inner, SharedDependency shared)
 {
     Inner = inner;
     Shared = shared;
 }