示例#1
0
        public void ModifiedScopesHaveTheirOwnDelegate()
        {
            var attachingModule = new AttachingModule();

            Assert.Equal(0, attachingModule.Registrations.Count);

            var builder = new ContainerBuilder();

            builder.RegisterModule(attachingModule);

            using (var container = builder.Build())
            {
                Assert.NotNull(container.ComponentRegistry.Properties[MetadataKeys.RegisteredPropertyKey]);
                using (var outerScope = container.BeginLifetimeScope(c => c.RegisterType(typeof(int))))
                {
                    Assert.Equal(
                        container.ComponentRegistry.Properties[MetadataKeys.RegisteredPropertyKey],
                        outerScope.ComponentRegistry.Properties[MetadataKeys.RegisteredPropertyKey]);
                    outerScope.ComponentRegistry.Registered += (s, e) => { };
                    using (var innerScope = outerScope.BeginLifetimeScope())
                    {
                        Assert.NotEqual(
                            container.ComponentRegistry.Properties[MetadataKeys.RegisteredPropertyKey],
                            innerScope.ComponentRegistry.Properties[MetadataKeys.RegisteredPropertyKey]);
                    }
                }
            }
        }
示例#2
0
        public void AttachesToRegistrations()
        {
            var attachingModule = new AttachingModule();
            Assert.Equal(0, attachingModule.Registrations.Count);

            var builder = new ContainerBuilder();
            builder.RegisterType(typeof(object));
            builder.RegisterModule(attachingModule);
            builder.RegisterInstance("Hello!");

            var container = builder.Build();

            Assert.Equal(container.ComponentRegistry.Registrations.Count(), attachingModule.Registrations.Count);
        }
示例#3
0
        public void AttachesToRegistrations()
        {
            var attachingModule = new AttachingModule();

            Assert.Equal(0, attachingModule.Registrations.Count);

            var builder = new ContainerBuilder();

            builder.RegisterType(typeof(object));
            builder.RegisterModule(attachingModule);
            builder.RegisterInstance("Hello!");

            var container = builder.Build();

            Assert.Equal(container.ComponentRegistry.Registrations.Count(), attachingModule.Registrations.Count);
        }
示例#4
0
        public void AttachesToRegistrationsInScope()
        {
            var attachingModule = new AttachingModule();

            Assert.Equal(0, attachingModule.Registrations.Count);

            var builder = new ContainerBuilder();

            builder.RegisterModule(attachingModule);

            using (var container = builder.Build())
                using (var scope = container.BeginLifetimeScope(c => c.RegisterType(typeof(int))))
                {
                    var expected = container.ComponentRegistry.Registrations.Count() + scope.ComponentRegistry.Registrations.Count();
                    Assert.Equal(expected, attachingModule.Registrations.Count);
                }
        }
示例#5
0
        public void ModifiedScopesHaveTheirOwnDelegate()
        {
            var attachingModule = new AttachingModule();

            Assert.Equal(0, attachingModule.Registrations.Count);

            var builder = new ContainerBuilder();

            builder.RegisterModule(attachingModule);

            using (var container = builder.Build())
            {
                Assert.NotNull(container.ComponentRegistry.Properties[MetadataKeys.RegisteredPropertyKey]);
                using (container.BeginLifetimeScope(c =>
                {
                    c.RegisterCallback(outerBuilder =>
                    {
                        Assert.Equal(
                            container.ComponentRegistry.Properties[MetadataKeys.RegisteredPropertyKey],
                            outerBuilder.Properties[MetadataKeys.RegisteredPropertyKey]);

                        outerBuilder.Registered += (s, e) => { };

                        Assert.NotEqual(
                            container.ComponentRegistry.Properties[MetadataKeys.RegisteredPropertyKey],
                            outerBuilder.Properties[MetadataKeys.RegisteredPropertyKey]);
                    });
                    c.RegisterCallback(outerBuilder =>
                    {
                        Assert.Equal(
                            container.ComponentRegistry.Properties[MetadataKeys.RegistrationSourceAddedPropertyKey],
                            outerBuilder.Properties[MetadataKeys.RegistrationSourceAddedPropertyKey]);

                        outerBuilder.RegistrationSourceAdded += (s, e) => { };

                        Assert.NotEqual(
                            container.ComponentRegistry.Properties[MetadataKeys.RegisteredPropertyKey],
                            outerBuilder.Properties[MetadataKeys.RegisteredPropertyKey]);
                    });

                    c.RegisterType(typeof(Service1));
                }))
                {
                }
            }
        }