creates ServicesCompositionRoot

This commit is contained in:
Shannon
2015-12-21 14:27:36 +01:00
parent 69e1df87df
commit 6593f4eaaa
8 changed files with 75 additions and 58 deletions

View File

@@ -9,12 +9,12 @@ namespace Umbraco.Core.DependencyInjection
/// </summary>
public sealed class ConfigurationCompositionRoot : ICompositionRoot
{
public void Compose(IServiceRegistry serviceRegistry)
public void Compose(IServiceRegistry container)
{
serviceRegistry.Register<IUmbracoSettingsSection>(factory => UmbracoConfig.For.UmbracoSettings());
serviceRegistry.Register<IContentSection>(factory => factory.GetInstance<IUmbracoSettingsSection>().Content);
serviceRegistry.Register<ITemplatesSection>(factory => factory.GetInstance<IUmbracoSettingsSection>().Templates);
serviceRegistry.Register<IRequestHandlerSection>(factory => factory.GetInstance<IUmbracoSettingsSection>().RequestHandler);
container.Register<IUmbracoSettingsSection>(factory => UmbracoConfig.For.UmbracoSettings());
container.Register<IContentSection>(factory => factory.GetInstance<IUmbracoSettingsSection>().Content);
container.Register<ITemplatesSection>(factory => factory.GetInstance<IUmbracoSettingsSection>().Templates);
container.Register<IRequestHandlerSection>(factory => factory.GetInstance<IUmbracoSettingsSection>().RequestHandler);
//TODO: Add the other config areas...
}

View File

@@ -19,15 +19,16 @@ namespace Umbraco.Core.DependencyInjection
{
public void Compose(IServiceRegistry container)
{
container.Register<IDatabaseFactory>(factory => new DefaultDatabaseFactory(GlobalSettings.UmbracoConnectionName, factory.GetInstance<ILogger>()));
container.Register<IDatabaseFactory>(factory => new DefaultDatabaseFactory(GlobalSettings.UmbracoConnectionName, factory.GetInstance<ILogger>()), new PerContainerLifetime());
container.Register<DatabaseContext>(factory => GetDbContext(factory), new PerContainerLifetime());
container.Register<SqlSyntaxProviders>(factory => SqlSyntaxProviders.CreateDefault(factory.GetInstance<ILogger>()));
container.Register<IUnitOfWorkProvider, FileUnitOfWorkProvider>();
container.Register<IDatabaseUnitOfWorkProvider, PetaPocoUnitOfWorkProvider>();
container.Register<SqlSyntaxProviders>(factory => SqlSyntaxProviders.CreateDefault(factory.GetInstance<ILogger>()), new PerContainerLifetime());
container.Register<IUnitOfWorkProvider, FileUnitOfWorkProvider>(new PerContainerLifetime());
container.Register<IDatabaseUnitOfWorkProvider>(factory => new PetaPocoUnitOfWorkProvider(factory.GetInstance<ILogger>()), new PerContainerLifetime());
container.Register<IMappingResolver>(factory => new MappingResolver(
factory.GetInstance<IServiceContainer>(),
factory.GetInstance<ILogger>(),
() => factory.GetInstance<PluginManager>().ResolveAssignedMapperTypes()));
() => factory.GetInstance<PluginManager>().ResolveAssignedMapperTypes()),
new PerContainerLifetime());
container.Register<RepositoryFactory>();
container.Register<ISqlSyntaxProvider>(factory => factory.GetInstance<DatabaseContext>().SqlSyntax);
container.Register<CacheHelper>(factory => CacheHelper.CreateDisabledCacheHelper(), "DisabledCache", new PerContainerLifetime());

View File

@@ -0,0 +1,35 @@
using System.Collections.Generic;
using LightInject;
using Umbraco.Core.Events;
using Umbraco.Core.Logging;
using Umbraco.Core.Persistence;
using Umbraco.Core.Persistence.UnitOfWork;
using Umbraco.Core.Publishing;
using Umbraco.Core.Services;
using Umbraco.Core.Strings;
namespace Umbraco.Core.DependencyInjection
{
public sealed class ServicesCompositionRoot : ICompositionRoot
{
public void Compose(IServiceRegistry container)
{
container.Register<BasePublishingStrategy, PublishingStrategy>(new PerContainerLifetime());
//These will be replaced by the web boot manager when running in a web context
container.Register<IEventMessagesFactory, TransientMessagesFactory>();
container.Register<ServiceContext>(factory => new ServiceContext(
factory.GetInstance<RepositoryFactory>(),
factory.GetInstance<IDatabaseUnitOfWorkProvider>(),
factory.GetInstance<IUnitOfWorkProvider>(),
factory.GetInstance<BasePublishingStrategy>(),
factory.GetInstance<CacheHelper>(),
factory.GetInstance<ILogger>(),
factory.GetInstance<IEventMessagesFactory>(),
factory.GetInstance<IEnumerable<IUrlSegmentProvider>>()),
new PerContainerLifetime());
}
}
}