/// <inheritdoc />
        public void Start(Library rootLibrary)
        {
            Fail.IfArgumentNull(rootLibrary, nameof(rootLibrary));
            Fail.IfNotNull(this.container, Violation.Of($"{nameof(WindsorEngine)} already started"));

            var librarian = new Librarian(rootLibrary);

            Library[] allLibraries = librarian.GetLibraries();
            var       extensions   = allLibraries.SelectMany(library => library.GetWindsorEngineExtensions()).ToArray();

            this.container = new WindsorContainer();

            this.container.Kernel.Resolver.AddSubResolver(new ComponentCollectionResolver(this.container.Kernel));

            this.container.Register(Component.For <IWindsorContainer>()
                                    .Instance(this.container));
            this.container.Register(Component.For <IWindsorEngine>()
                                    .Instance(this));
            this.container.Register(Component.For <ILibrarian>()
                                    .Instance(librarian));

            foreach (Library library in allLibraries)
            {
                this.RegisterComponentsFrom(library, extensions);
            }
        }
Esempio n. 2
0
        public void GetLibrariesContainsCoreLibraryEvenIfItWasNotSpecifiedAsDependency()
        {
            // ARRANGE
            var librarian = new Librarian(new SynergyCoreSampleLibrary());

            // ACT
            Library[] libraries = librarian.GetLibraries();

            // ASSERT
            Assert.That(libraries,
                        Is.EquivalentTo(
                            new Library[]
            {
                new SynergyCoreSampleLibrary(),
                new SynergyCoreLibrary(),
            }));
        }