Removed named service reference from repo ctors. Now registered with factory method that looks up services by name instead.

This commit is contained in:
Lars-Erik Aabech
2018-06-20 19:57:42 +02:00
parent 7af04b0a2f
commit db2ad87784
12 changed files with 40 additions and 39 deletions
@@ -1,8 +1,12 @@
using System;
using LightInject;
using Umbraco.Core.Cache;
using Umbraco.Core.Configuration.UmbracoSettings;
using Umbraco.Core.IO;
using Umbraco.Core.Logging;
using Umbraco.Core.Persistence.Repositories;
using Umbraco.Core.Persistence.Repositories.Implement;
using Umbraco.Core.Scoping;
namespace Umbraco.Core.Composing.CompositionRoots
{
@@ -36,7 +40,7 @@ namespace Umbraco.Core.Composing.CompositionRoots
// some repositories have an annotated ctor parameter to pick the right cache helper
// repositories
container.RegisterSingleton<IAuditRepository, AuditRepository>();
container.RegisterSingleton<IAuditRepository>(f => new AuditRepository(f.GetInstance<IScopeAccessor>(), f.GetInstance<CacheHelper>(DisabledCache), f.GetInstance<ILogger>()));
container.RegisterSingleton<IAuditEntryRepository, AuditEntryRepository>();
container.RegisterSingleton<IContentTypeRepository, ContentTypeRepository>();
container.RegisterSingleton<IDataTypeContainerRepository, DataTypeContainerRepository>();
@@ -59,23 +63,30 @@ namespace Umbraco.Core.Composing.CompositionRoots
container.RegisterSingleton<INotificationsRepository, NotificationsRepository>();
container.RegisterSingleton<IPublicAccessRepository, PublicAccessRepository>();
container.RegisterSingleton<IRedirectUrlRepository, RedirectUrlRepository>();
container.RegisterSingleton<IRelationRepository, RelationRepository>();
container.RegisterSingleton<IRelationRepository>(f => new RelationRepository(f.GetInstance<IScopeAccessor>(), f.GetInstance<CacheHelper>(DisabledCache), f.GetInstance<ILogger>(), f.GetInstance<IRelationTypeRepository>()));
container.RegisterSingleton<IRelationTypeRepository, RelationTypeRepository>();
container.RegisterSingleton<IServerRegistrationRepository, ServerRegistrationRepository>();
container.RegisterSingleton<ITagRepository, TagRepository>();
container.RegisterSingleton<ITaskRepository, TaskRepository>();
container.RegisterSingleton<ITaskTypeRepository, TaskTypeRepository>();
container.RegisterSingleton<ITemplateRepository, TemplateRepository>();
container.RegisterSingleton<ITaskRepository>(f => new TaskRepository(f.GetInstance<IScopeAccessor>(), f.GetInstance<CacheHelper>(DisabledCache), f.GetInstance<ILogger>()));
container.RegisterSingleton<ITaskTypeRepository>(f => new TaskTypeRepository(f.GetInstance<IScopeAccessor>(), f.GetInstance<CacheHelper>(DisabledCache), f.GetInstance<ILogger>()));
container.RegisterSingleton<ITemplateRepository>(f => new TemplateRepository(
f.GetInstance<IScopeAccessor>(),
f.GetInstance<CacheHelper>(),
f.GetInstance<ILogger>(),
f.GetInstance<ITemplatesSection>(),
f.GetInstance<IFileSystem>(Constants.Composing.FileSystems.MasterpageFileSystem),
f.GetInstance<IFileSystem>(Constants.Composing.FileSystems.ViewFileSystem)
));
container.RegisterSingleton<IUserGroupRepository, UserGroupRepository>();
container.RegisterSingleton<IUserRepository, UserRepository>();
container.RegisterSingleton<IConsentRepository, ConsentRepository>();
// repositories that depend on a filesystem
// these have an annotated ctor parameter to pick the right file system
container.RegisterSingleton<IPartialViewMacroRepository, PartialViewMacroRepository>();
container.RegisterSingleton<IPartialViewRepository, PartialViewRepository>();
container.RegisterSingleton<IScriptRepository, ScriptRepository>();
container.RegisterSingleton<IStylesheetRepository, StylesheetRepository>();
container.RegisterSingleton<IPartialViewMacroRepository>(f => new PartialViewMacroRepository(f.GetInstance<IFileSystem>("PartialViewMacroFileSystem")));
container.RegisterSingleton<IPartialViewRepository>(f => new PartialViewRepository(f.GetInstance<IFileSystem>("PartialViewFileSystem")));
container.RegisterSingleton<IScriptRepository>(f => new ScriptRepository(f.GetInstance<IFileSystem>("ScriptFileSystem"), f.GetInstance<IContentSection>()));
container.RegisterSingleton<IStylesheetRepository>(f => new StylesheetRepository(f.GetInstance<IFileSystem>("StylesheetFileSystem")));
}
}
}
+3
View File
@@ -302,6 +302,9 @@ namespace Umbraco.Core.IO
// could be optimized by having FileSystemWrapper inherit from ShadowWrapper, maybe
var innerFs = GetUnderlyingFileSystemNoCache(alias, fallback);
var shadowWrapper = new ShadowWrapper(innerFs, "typed/" + alias, () => IsScoped());
// fixme - switch to using container. where are these registered?
var fs = (IFileSystem) Activator.CreateInstance(typeof(TFileSystem), shadowWrapper);
_wrappers.Add(shadowWrapper); // keeping a reference to the wrapper
return fs;
@@ -1,10 +1,8 @@
using System;
using System.Collections.Generic;
using System.Linq;
using LightInject;
using NPoco;
using Umbraco.Core.Cache;
using Umbraco.Core.Composing.CompositionRoots;
using Umbraco.Core.Logging;
using Umbraco.Core.Models;
using Umbraco.Core.Persistence.DatabaseModelDefinitions;
@@ -16,7 +14,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
{
internal class AuditRepository : NPocoRepositoryBase<int, IAuditItem>, IAuditRepository
{
public AuditRepository(IScopeAccessor scopeAccessor, [Inject(RepositoryCompositionRoot.DisabledCache)] CacheHelper cache, ILogger logger)
public AuditRepository(IScopeAccessor scopeAccessor, CacheHelper cache, ILogger logger)
: base(scopeAccessor, cache, logger)
{ }
@@ -1,5 +1,4 @@
using LightInject;
using Umbraco.Core.IO;
using Umbraco.Core.IO;
using Umbraco.Core.Models;
namespace Umbraco.Core.Persistence.Repositories.Implement
@@ -7,7 +6,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
internal class PartialViewMacroRepository : PartialViewRepository, IPartialViewMacroRepository
{
public PartialViewMacroRepository([Inject("PartialViewMacroFileSystem")] IFileSystem fileSystem)
public PartialViewMacroRepository(IFileSystem fileSystem)
: base(fileSystem)
{ }
@@ -2,7 +2,6 @@
using System.IO;
using System.Linq;
using System.Text;
using LightInject;
using Umbraco.Core.IO;
using Umbraco.Core.Models;
@@ -10,7 +9,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
{
internal class PartialViewRepository : FileRepository<string, IPartialView>, IPartialViewRepository
{
public PartialViewRepository([Inject("PartialViewFileSystem")] IFileSystem fileSystem)
public PartialViewRepository(IFileSystem fileSystem)
: base(fileSystem)
{ }
@@ -1,10 +1,8 @@
using System;
using System.Collections.Generic;
using System.Linq;
using LightInject;
using NPoco;
using Umbraco.Core.Cache;
using Umbraco.Core.Composing.CompositionRoots;
using Umbraco.Core.Logging;
using Umbraco.Core.Models;
using Umbraco.Core.Models.Entities;
@@ -22,7 +20,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
{
private readonly IRelationTypeRepository _relationTypeRepository;
public RelationRepository(IScopeAccessor scopeAccessor, [Inject(RepositoryCompositionRoot.DisabledCache)] CacheHelper cache, ILogger logger, IRelationTypeRepository relationTypeRepository)
public RelationRepository(IScopeAccessor scopeAccessor, CacheHelper cache, ILogger logger, IRelationTypeRepository relationTypeRepository)
: base(scopeAccessor, cache, logger)
{
_relationTypeRepository = relationTypeRepository;
@@ -2,7 +2,6 @@
using System.Collections.Generic;
using System.IO;
using System.Linq;
using LightInject;
using Umbraco.Core.Configuration.UmbracoSettings;
using Umbraco.Core.IO;
using Umbraco.Core.Models;
@@ -16,7 +15,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
{
private readonly IContentSection _contentConfig;
public ScriptRepository([Inject("ScriptFileSystem")] IFileSystem fileSystem, IContentSection contentConfig)
public ScriptRepository(IFileSystem fileSystem, IContentSection contentConfig)
: base(fileSystem)
{
_contentConfig = contentConfig ?? throw new ArgumentNullException(nameof(contentConfig));
@@ -1,7 +1,6 @@
using System.Collections.Generic;
using System.IO;
using System.Linq;
using LightInject;
using Umbraco.Core.IO;
using Umbraco.Core.Models;
@@ -12,7 +11,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
/// </summary>
internal class StylesheetRepository : FileRepository<string, Stylesheet>, IStylesheetRepository
{
public StylesheetRepository([Inject("StylesheetFileSystem")] IFileSystem fileSystem)
public StylesheetRepository(IFileSystem fileSystem)
: base(fileSystem)
{ }
@@ -1,10 +1,8 @@
using System;
using System.Collections.Generic;
using System.Linq;
using LightInject;
using NPoco;
using Umbraco.Core.Cache;
using Umbraco.Core.Composing.CompositionRoots;
using Umbraco.Core.Exceptions;
using Umbraco.Core.Logging;
using Umbraco.Core.Models;
@@ -17,7 +15,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
{
internal class TaskRepository : NPocoRepositoryBase<int, Task>, ITaskRepository
{
public TaskRepository(IScopeAccessor scopeAccessor, [Inject(RepositoryCompositionRoot.DisabledCache)] CacheHelper cache, ILogger logger)
public TaskRepository(IScopeAccessor scopeAccessor, CacheHelper cache, ILogger logger)
: base(scopeAccessor, cache, logger)
{ }
@@ -1,10 +1,8 @@
using System;
using System.Collections.Generic;
using System.Linq;
using LightInject;
using NPoco;
using Umbraco.Core.Cache;
using Umbraco.Core.Composing.CompositionRoots;
using Umbraco.Core.Logging;
using Umbraco.Core.Models;
using Umbraco.Core.Persistence.Dtos;
@@ -16,7 +14,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
{
internal class TaskTypeRepository : NPocoRepositoryBase<int, TaskType>, ITaskTypeRepository
{
public TaskTypeRepository(IScopeAccessor scopeAccessor, [Inject(RepositoryCompositionRoot.DisabledCache)] CacheHelper cache, ILogger logger)
public TaskTypeRepository(IScopeAccessor scopeAccessor, CacheHelper cache, ILogger logger)
: base(scopeAccessor, cache, logger)
{ }
@@ -3,7 +3,6 @@ using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using LightInject;
using NPoco;
using Umbraco.Core.Cache;
using Umbraco.Core.Configuration.UmbracoSettings;
@@ -31,8 +30,8 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
private readonly MasterPageHelper _masterPageHelper;
public TemplateRepository(IScopeAccessor scopeAccessor, CacheHelper cache, ILogger logger, ITemplatesSection templateConfig,
[Inject(Constants.Composing.FileSystems.MasterpageFileSystem)] IFileSystem masterpageFileSystem,
[Inject(Constants.Composing.FileSystems.ViewFileSystem)] IFileSystem viewFileSystem)
IFileSystem masterpageFileSystem,
IFileSystem viewFileSystem)
: base(scopeAccessor, cache, logger)
{
_masterpagesFileSystem = masterpageFileSystem;
+6 -6
View File
@@ -35,32 +35,32 @@ namespace Umbraco.Web.Mvc
/// <summary>
/// Gets or sets the Umbraco context.
/// </summary>
public virtual UmbracoContext UmbracoContext { get; set; }
public virtual UmbracoContext UmbracoContext { get; }
/// <summary>
/// Gets or sets the database context.
/// </summary>
public IUmbracoDatabaseFactory DatabaseFactory { get; set; }
public IUmbracoDatabaseFactory DatabaseFactory { get; }
/// <summary>
/// Gets or sets the services context.
/// </summary>
public ServiceContext Services { get; set; }
public ServiceContext Services { get; }
/// <summary>
/// Gets or sets the application cache.
/// </summary>
public CacheHelper ApplicationCache { get; set; }
public CacheHelper ApplicationCache { get; }
/// <summary>
/// Gets or sets the logger.
/// </summary>
public ILogger Logger { get; set; }
public ILogger Logger { get; }
/// <summary>
/// Gets or sets the profiling logger.
/// </summary>
public ProfilingLogger ProfilingLogger { get; set; }
public ProfilingLogger ProfilingLogger { get; }
/// <summary>
/// Gets the membership helper.