Resvolution - MappingResolver

This commit is contained in:
Stephan
2016-08-17 11:50:38 +02:00
parent 648632bd36
commit aa8b8c7736
84 changed files with 382 additions and 417 deletions

View File

@@ -1,7 +1,7 @@
using System;
using LightInject;
using Umbraco.Core.Cache;
using Umbraco.Core.IO;
using Umbraco.Core.Logging;
using Umbraco.Core.Persistence;
using Umbraco.Core.Persistence.Mappers;
using Umbraco.Core.Persistence.Repositories;
@@ -41,13 +41,6 @@ namespace Umbraco.Core.DependencyInjection
container.RegisterSingleton<IUnitOfWorkProvider, FileUnitOfWorkProvider>();
container.RegisterSingleton<IDatabaseUnitOfWorkProvider, NPocoUnitOfWorkProvider>();
// register mapping resover
// using a factory because... no time to clean it up at the moment
container.RegisterSingleton<IMappingResolver>(factory => new MappingResolver(
factory.GetInstance<IServiceContainer>(),
factory.GetInstance<ILogger>(),
() => factory.GetInstance<PluginManager>().ResolveAssignedMapperTypes()));
// register repository factory
container.RegisterSingleton<RepositoryFactory>();
@@ -116,6 +109,17 @@ namespace Umbraco.Core.DependencyInjection
container.Register<IPartialViewRepository, PartialViewRepository>();
container.Register<IPartialViewMacroRepository, PartialViewMacroRepository>();
container.Register<IStylesheetRepository, StylesheetRepository>();
// collection builders require a full IServiceContainer because they need to
// be able to both register stuff, and get stuff - but ICompositionRoot gives
// us an IServiceRegistry - which *is* a full container - so, casting - bit
// awkward but it works
var serviceContainer = container as IServiceContainer;
if (serviceContainer == null) throw new Exception("Container is not IServiceContainer.");
// register persistence mappers
MapperCollectionBuilder.Register(serviceContainer)
.AddProducer(f => f.GetInstance<PluginManager>().ResolveAssignedMapperTypes());
}
}
}