diff --git a/src/Umbraco.Core/ObjectResolution/ContainerManyObjectsResolver.cs b/src/Umbraco.Core/ObjectResolution/ContainerManyObjectsResolver.cs
index 79ffa75ca5..85bb754c2d 100644
--- a/src/Umbraco.Core/ObjectResolution/ContainerManyObjectsResolver.cs
+++ b/src/Umbraco.Core/ObjectResolution/ContainerManyObjectsResolver.cs
@@ -4,7 +4,6 @@ using System.Linq;
using System.Web;
using LightInject;
using Umbraco.Core.Logging;
-using Umbraco.Core.Security;
namespace Umbraco.Core.ObjectResolution
{
@@ -44,7 +43,6 @@ namespace Umbraco.Core.ObjectResolution
}
#endregion
-
///
/// Constructor for use with IoC
///
@@ -55,14 +53,11 @@ namespace Umbraco.Core.ObjectResolution
internal ContainerManyObjectsResolver(IServiceContainer container, ILogger logger, IEnumerable types, ObjectLifetimeScope scope = ObjectLifetimeScope.Application)
: base(logger, types, scope)
{
- if (container == null) throw new ArgumentNullException("container");
+ if (container == null) throw new ArgumentNullException(nameof(container));
_container = container;
Resolution.Frozen += Resolution_Frozen;
-
}
-
-
-
+
///
/// When resolution is frozen add all the types to the container
///
@@ -70,9 +65,12 @@ namespace Umbraco.Core.ObjectResolution
///
void Resolution_Frozen(object sender, EventArgs e)
{
+ var prefix = GetType().FullName + "_";
+ var i = 0;
foreach (var type in InstanceTypes)
{
- _container.Register(type, GetLifetime(LifetimeScope));
+ var name = prefix + i++;
+ _container.Register(typeof(TResolved), type, name, GetLifetime(LifetimeScope));
}
}
@@ -89,7 +87,7 @@ namespace Umbraco.Core.ObjectResolution
return new PerRequestLifeTime();
case ObjectLifetimeScope.Application:
return new PerContainerLifetime();
- case ObjectLifetimeScope.Transient:
+ //case ObjectLifetimeScope.Transient:
default:
return null;
}
@@ -103,8 +101,23 @@ namespace Umbraco.Core.ObjectResolution
{
//NOTE: we ignore scope because objects are registered under this scope and not build based on the scope.
- return _container.GetAllInstances();
- }
-
+ var prefix = GetType().FullName + "_";
+ var services = _container.AvailableServices
+ .Where(x => x.ServiceName.StartsWith(prefix))
+ .OrderBy(x => x.ServiceName);
+ var allInstances = _container.GetAllInstances()
+ .ToDictionary(x => x.GetType(), x => x);
+
+ //foreach (var service in services)
+ // LogHelper.Debug