WIP - have added LightInject as a fast and tiny IoC container that is embedded. Have updated all required SingleObjectResolverBase and non lazy ManyObjectResolverBase to use a Container implementation. Have updated the boot managers to use IoC to instantiate all their requirements. This is so much nicer now by using IoC to ctor all of the objects in these resolvers we can get ctor injection OOTB so no more singletons. Need to create resolver to support the lazy resolver with IoC next. Updated IContentFinders, IThumbnailProviders to use ctor injection.

This commit is contained in:
Shannon
2015-01-21 12:48:08 +11:00
parent 215113d635
commit 13a4d5c81c
65 changed files with 9433 additions and 1174 deletions

View File

@@ -1,38 +1,59 @@
using System;
using System.Linq.Expressions;
using Umbraco.Core.LightInject;
using Umbraco.Core.ObjectResolution;
namespace Umbraco.Web.Routing
{
/// <summary>
/// Resolves the <see cref="ISiteDomainHelper"/> implementation.
/// </summary>
public sealed class SiteDomainHelperResolver : SingleObjectResolverBase<SiteDomainHelperResolver, ISiteDomainHelper>
{
/// <summary>
/// <summary>
/// Resolves the <see cref="ISiteDomainHelper"/> implementation.
/// </summary>
public sealed class SiteDomainHelperResolver : ContainerSingleObjectResolver<SiteDomainHelperResolver, ISiteDomainHelper>
{
/// <summary>
/// Initializes the resolver to use IoC
/// </summary>
/// <param name="container"></param>
/// <param name="implementationType"></param>
internal SiteDomainHelperResolver(IServiceContainer container, Type implementationType)
: base(container, implementationType)
{
}
/// <summary>
/// Initializes a new instance of the <see cref="SiteDomainHelperResolver"/> class with an <see cref="ISiteDomainHelper"/> implementation.
/// </summary>
/// </summary>
/// <param name="helper">The <see cref="ISiteDomainHelper"/> implementation.</param>
internal SiteDomainHelperResolver(ISiteDomainHelper helper)
: base(helper)
{ }
: base(helper)
{ }
/// <summary>
/// <summary>
/// Initializes the resolver to use IoC
/// </summary>
/// <param name="container"></param>
/// <param name="implementationType"></param>
internal SiteDomainHelperResolver(IServiceContainer container, Expression<Func<IServiceFactory, ISiteDomainHelper>> implementationType)
: base(container, implementationType)
{
}
/// <summary>
/// Can be used by developers at runtime to set their IDomainHelper at app startup
/// </summary>
/// </summary>
/// <param name="helper"></param>
public void SetHelper(ISiteDomainHelper helper)
{
Value = helper;
}
public void SetHelper(ISiteDomainHelper helper)
{
Value = helper;
}
/// <summary>
/// <summary>
/// Gets or sets the <see cref="ISiteDomainHelper"/> implementation.
/// </summary>
/// </summary>
public ISiteDomainHelper Helper
{
get { return Value; }
}
}
{
get { return Value; }
}
}
}