Exemple #1
0
        /// <summary>
        /// Runs the application KickStart extension with specified <paramref name="context" />.
        /// </summary>
        /// <param name="context">The KickStart <see cref="Context" /> containing assemblies to scan.</param>
        public void Run(Context context)
        {
            var modules = context.GetInstancesAssignableFrom <Module>();

            var builder = new ContainerBuilder();

            foreach (var module in modules)
            {
                Logger.Trace()
                .Logger <AutofacStarter>()
                .Message("Register Autofac Module: {0}", module)
                .Write();

                builder.RegisterModule(module);
            }

            if (_options.InitializeBuilder != null)
            {
                _options.InitializeBuilder(builder);
            }

            Logger.Trace()
            .Logger <AutofacStarter>()
            .Message("Create Autofac Container...")
            .Write();

            var container = builder.Build(_options.BuildOptions);

            if (_options.InitializeContainer != null)
            {
                _options.InitializeContainer(container);
            }

            var adaptor = new AutofacAdaptor(container);

            context.SetContainer(adaptor);
        }