Пример #1
0
        /// <summary>Registers the type mappings with the Unity container.</summary>
        /// <param name="container">The unity container to configure.</param>
        /// <remarks>There is no need to register concrete types such as controllers or API controllers (unless you want to
        /// change the defaults), as Unity allows resolving a concrete type even if it was not previously registered.</remarks>
        public static void RegisterTypes(IUnityContainer container)
        {
            // NOTE: To load from web.config uncomment the line below. Make sure to add a Microsoft.Practices.Unity.Configuration to the using statements.
            // container.LoadConfiguration();

            container.RegisterType <ITemplateRepository, TerrificTemplateRepository>();
            container
            .RegisterType <ITerrificTemplateHandlerFactory, GenericUnityTerrificTemplateHandlerFactory <MvcTerrificTemplateHandler> >();

            container.RegisterType <INamingRule, NamingRule>();
            container.RegisterType <IModelTypeProvider>(new InjectionFactory(u => new StaticModelTypeProvider("TerrificNet.Sample.Net.Models", "TerrificNet.Sample.Net.Models", u.Resolve <INamingRule>(), u.Resolve <ISchemaProvider>())));

            var rootPath   = HostingEnvironment.MapPath("~/");
            var fileSystem = new FileSystem(Path.Combine(rootPath, @"..\TerrificNet.Sample"));

            container.RegisterInstance <IFileSystem>(fileSystem);

            var config = ConfigurationLoader.LoadTerrificConfiguration(string.Empty, fileSystem);

            DefaultUnityModule.RegisterForConfiguration(container, config);
        }
Пример #2
0
        public static UnityContainer Initialize(string path, TerrificNetHostConfiguration configuration, ServerConfiguration serverConfiguration)
        {
            var container = new UnityContainer();

            container.RegisterType <ITerrificTemplateHandler, DefaultTerrificTemplateHandler>();
            container
            .RegisterType
            //<ITerrificTemplateHandlerFactory, GenericUnityTerrificTemplateHandlerFactory<DefaultTerrificTemplateHandler>>();
            <ITerrificTemplateHandlerFactory, GenericUnityTerrificTemplateHandlerFactory <PageEditDefaultTerrificTemplateHandler> >();
            container.RegisterType <INamingRule, NamingRule>();
            container.RegisterInstance(serverConfiguration);

            new DefaultUnityModule().Configure(container);

#if DEBUG
            container.RegisterInstance <IFileSystem>(new FileSystem(path));
#else
            container.RegisterInstance <IFileSystem>(new EmbeddedResourceFileSystem(typeof(WebInitializer).Assembly));
#endif

            foreach (var item in configuration.Applications.Values)
            {
                var childContainer = container.CreateChildContainer();

                var app = DefaultUnityModule.RegisterForApplication(childContainer, path, item.BasePath,
                                                                    item.ApplicationName, item.Section);
                container.RegisterInstance(item.ApplicationName, app);
            }

            foreach (var app in container.ResolveAll <TerrificNetApplication>())
            {
                foreach (var template in app.Container.Resolve <ITemplateRepository>().GetAll())
                {
                    Console.WriteLine(template.Id);
                }
            }

            new TerrificBundleUnityModule().Configure(container);
            return(container);
        }