Files
Umbraco-CMS/src/Umbraco.Web/CompositionExtensions.cs

106 lines
3.8 KiB
C#
Raw Normal View History

using System;
using Microsoft.Extensions.DependencyInjection;
2019-02-14 09:15:47 +01:00
using Umbraco.Core;
2017-05-30 15:46:25 +02:00
using Umbraco.Core.Composing;
using Umbraco.Web.Actions;
using Umbraco.Web.ContentApps;
using Umbraco.Web.Dashboards;
using Umbraco.Web.Editors;
using Umbraco.Web.HealthCheck;
using Umbraco.Web.Media.EmbedProviders;
using Umbraco.Web.Mvc;
using Umbraco.Web.PublishedCache;
using Umbraco.Web.Routing;
using Umbraco.Web.Search;
2019-02-18 11:22:25 +01:00
using Umbraco.Web.Sections;
using Umbraco.Web.Tour;
using Umbraco.Web.Trees;
using Current = Umbraco.Web.Composing.Current;
// the namespace here is intentional - although defined in Umbraco.Web assembly,
// this class should be visible when using Umbraco.Core.Components, alongside
// Umbraco.Core's own CompositionExtensions class
// ReSharper disable once CheckNamespace
namespace Umbraco.Web
{
/// <summary>
/// Provides extension methods to the <see cref="Composition"/> class.
/// </summary>
public static class WebCompositionExtensions
{
[Obsolete("This extension method exists only to ease migration, please refactor")]
public static IServiceProvider CreateServiceProvider(this Composition composition)
{
composition.RegisterBuilders();
return composition.Services.BuildServiceProvider();
}
2018-11-29 10:35:16 +01:00
#region Uniques
/// <summary>
/// Sets the content last chance finder.
/// </summary>
/// <typeparam name="T">The type of the content last chance finder.</typeparam>
/// <param name="composition">The composition.</param>
public static void SetContentLastChanceFinder<T>(this Composition composition)
where T : class, IContentLastChanceFinder
{
composition.Services.AddUnique<IContentLastChanceFinder, T>();
}
/// <summary>
/// Sets the content last chance finder.
/// </summary>
/// <param name="composition">The composition.</param>
/// <param name="factory">A function creating a last chance finder.</param>
public static void SetContentLastChanceFinder(this Composition composition, Func<IServiceProvider, IContentLastChanceFinder> factory)
{
composition.Services.AddUnique(factory);
}
/// <summary>
/// Sets the content last chance finder.
/// </summary>
/// <param name="composition">The composition.</param>
/// <param name="finder">A last chance finder.</param>
public static void SetContentLastChanceFinder(this Composition composition, IContentLastChanceFinder finder)
{
composition.Services.AddUnique(_ => finder);
}
/// <summary>
/// Sets the site domain helper.
/// </summary>
/// <typeparam name="T">The type of the site domain helper.</typeparam>
/// <param name="composition"></param>
public static void SetSiteDomainHelper<T>(this Composition composition)
where T : class, ISiteDomainHelper
{
composition.Services.AddUnique<ISiteDomainHelper, T>();
}
/// <summary>
/// Sets the site domain helper.
/// </summary>
/// <param name="composition">The composition.</param>
/// <param name="factory">A function creating a helper.</param>
public static void SetSiteDomainHelper(this Composition composition, Func<IServiceProvider, ISiteDomainHelper> factory)
{
composition.Services.AddUnique(factory);
}
/// <summary>
/// Sets the site domain helper.
/// </summary>
/// <param name="composition">The composition.</param>
/// <param name="helper">A helper.</param>
public static void SetSiteDomainHelper(this Composition composition, ISiteDomainHelper helper)
{
composition.Services.AddUnique(_ => helper);
}
#endregion
}
}