DotvvmStartup.cs

47 lines | 1.559 kB Blame History Raw Download

namespace DotVvmCastleWindsor
{
    using Castle.MicroKernel.Registration;
    using Castle.Windsor;
    using DotVVM.Framework.Configuration;
    using DotVVM.Framework.ViewModel.Serialization;
    using Helpers;
    using Microsoft.Extensions.DependencyInjection;

    public class DotvvmStartup : IDotvvmStartup, IDotvvmServiceConfigurator
    {
        public void Configure(DotvvmConfiguration config, string appPath)
        {
            ConfigureRoutes(config, appPath);
            ConfigureResources(config, appPath);
            ConfigureControls(config, appPath);
        }

        private void ConfigureControls(DotvvmConfiguration config, string appPath)
        {
        }

        private void ConfigureResources(DotvvmConfiguration config, string appPath)
        {
        }

        private void ConfigureRoutes(DotvvmConfiguration config, string appPath)
        {
            config.RouteTable.Add("Default", "", "Views/Default.dothtml");
            // config.RouteTable.AutoDiscoverRoutes(new DefaultRouteStrategy(config));
        }

        public void ConfigureServices(IDotvvmServiceCollection svc)
        {
            svc.AddDefaultTempStorages(Helpers.Constants.DefaultTemporaryStoragePath);

            var windsorContainer = new WindsorContainer();
            windsorContainer.Register(Classes.FromThisAssembly()
                .InNamespace(Helpers.Constants.ViewModelsNamespace)
                .WithServiceDefaultInterfaces());

            svc.Services.AddSingleton<IViewModelLoader>(_ => new WindsorViewModelLoader(windsorContainer));
        }
    }
}