Files
Umbraco-CMS/src/Umbraco.Core/Components/CompositionExtensions.cs

240 lines
9.7 KiB
C#
Raw Normal View History

using System;
using Umbraco.Core.Cache;
using Umbraco.Core.Dictionary;
2017-05-30 15:46:25 +02:00
using Umbraco.Core.Composing;
using Umbraco.Core.Migrations;
using Umbraco.Core.Models.PublishedContent;
using Umbraco.Core.Persistence.Mappers;
using Umbraco.Core.PropertyEditors;
using Umbraco.Core.Strings;
using Umbraco.Core.Sync;
using Umbraco.Core._Legacy.PackageActions;
namespace Umbraco.Core.Components
{
/// <summary>
/// Provides extension methods to the <see cref="Composition"/> class.
/// </summary>
public static class CompositionExtensions
{
#region Collection Builders
/// <summary>
/// Gets the cache refreshers collection builder.
/// </summary>
/// <param name="composition">The composition.</param>
public static CacheRefresherCollectionBuilder CacheRefreshers(this Composition composition)
2018-11-28 11:05:41 +01:00
=> composition.GetCollectionBuilder<CacheRefresherCollectionBuilder>();
/// <summary>
/// Gets the mappers collection builder.
/// </summary>
/// <param name="composition">The composition.</param>
public static MapperCollectionBuilder Mappers(this Composition composition)
2018-11-28 11:05:41 +01:00
=> composition.GetCollectionBuilder<MapperCollectionBuilder>();
/// <summary>
/// Gets the package actions collection builder.
/// </summary>
/// <param name="composition">The composition.</param>
internal static PackageActionCollectionBuilder PackageActions(this Composition composition)
2018-11-28 11:05:41 +01:00
=> composition.GetCollectionBuilder<PackageActionCollectionBuilder>();
/// <summary>
2018-02-16 12:00:45 +01:00
/// Gets the data editor collection builder.
/// </summary>
/// <param name="composition">The composition.</param>
2018-02-16 12:00:45 +01:00
public static DataEditorCollectionBuilder DataEditors(this Composition composition)
2018-11-28 11:05:41 +01:00
=> composition.GetCollectionBuilder<DataEditorCollectionBuilder>();
/// <summary>
/// Gets the property value converters collection builder.
/// </summary>
/// <param name="composition">The composition.</param>
public static PropertyValueConverterCollectionBuilder PropertyValueConverters(this Composition composition)
2018-11-28 11:05:41 +01:00
=> composition.GetCollectionBuilder<PropertyValueConverterCollectionBuilder>();
/// <summary>
/// Gets the url segment providers collection builder.
/// </summary>
/// <param name="composition">The composition.</param>
public static UrlSegmentProviderCollectionBuilder UrlSegmentProviders(this Composition composition)
2018-11-28 11:05:41 +01:00
=> composition.GetCollectionBuilder<UrlSegmentProviderCollectionBuilder>();
/// <summary>
/// Gets the validators collection builder.
/// </summary>
/// <param name="composition">The composition.</param>
2018-03-16 09:06:44 +01:00
internal static ManifestValueValidatorCollectionBuilder Validators(this Composition composition)
2018-11-28 11:05:41 +01:00
=> composition.GetCollectionBuilder<ManifestValueValidatorCollectionBuilder>();
2017-12-22 12:29:56 +01:00
/// <summary>
/// Gets the post-migrations collection builder.
/// </summary>
/// <param name="composition">The composition.</param>
internal static PostMigrationCollectionBuilder PostMigrations(this Composition composition)
2018-11-28 11:05:41 +01:00
=> composition.GetCollectionBuilder<PostMigrationCollectionBuilder>();
2017-12-22 12:29:56 +01:00
#endregion
#region Singleton
/// <summary>
/// Sets the culture dictionary factory.
/// </summary>
/// <typeparam name="T">The type of the factory.</typeparam>
/// <param name="composition">The composition.</param>
public static void SetCultureDictionaryFactory<T>(this Composition composition)
where T : ICultureDictionaryFactory
{
2018-11-28 11:05:41 +01:00
composition.RegisterSingleton<ICultureDictionaryFactory, T>();
}
/// <summary>
/// Sets the culture dictionary factory.
/// </summary>
/// <param name="composition">The composition.</param>
/// <param name="factory">A function creating a culture dictionary factory.</param>
2018-11-28 11:05:41 +01:00
public static void SetCultureDictionaryFactory(this Composition composition, Func<IFactory, ICultureDictionaryFactory> factory)
{
2018-11-28 11:05:41 +01:00
composition.RegisterSingleton(factory);
}
/// <summary>
/// Sets the culture dictionary factory.
/// </summary>
/// <param name="composition">The composition.</param>
/// <param name="factory">A factory.</param>
public static void SetCultureDictionaryFactory(this Composition composition, ICultureDictionaryFactory factory)
{
2018-11-28 11:05:41 +01:00
composition.RegisterSingleton(_ => factory);
}
/// <summary>
/// Sets the published content model factory.
/// </summary>
/// <typeparam name="T">The type of the factory.</typeparam>
/// <param name="composition">The composition.</param>
public static void SetPublishedContentModelFactory<T>(this Composition composition)
2017-09-26 14:57:50 +02:00
where T : IPublishedModelFactory
{
2018-11-28 11:05:41 +01:00
composition.RegisterSingleton<IPublishedModelFactory, T>();
}
/// <summary>
/// Sets the published content model factory.
/// </summary>
/// <param name="composition">The composition.</param>
/// <param name="factory">A function creating a published content model factory.</param>
2018-11-28 11:05:41 +01:00
public static void SetPublishedContentModelFactory(this Composition composition, Func<IFactory, IPublishedModelFactory> factory)
{
2018-11-28 11:05:41 +01:00
composition.RegisterSingleton(factory);
}
/// <summary>
/// Sets the published content model factory.
/// </summary>
/// <param name="composition">The composition.</param>
/// <param name="factory">A published content model factory.</param>
2017-09-26 14:57:50 +02:00
public static void SetPublishedContentModelFactory(this Composition composition, IPublishedModelFactory factory)
{
2018-11-28 11:05:41 +01:00
composition.RegisterSingleton(_ => factory);
}
/// <summary>
/// Sets the server registrar.
/// </summary>
/// <typeparam name="T">The type of the server registrar.</typeparam>
/// <param name="composition">The composition.</param>
public static void SetServerRegistrar<T>(this Composition composition)
where T : IServerRegistrar
{
2018-11-28 11:05:41 +01:00
composition.RegisterSingleton<IServerRegistrar, T>();
}
/// <summary>
/// Sets the server registrar.
/// </summary>
/// <param name="composition">The composition.</param>
/// <param name="factory">A function creating a server registar.</param>
2018-11-28 11:05:41 +01:00
public static void SetServerRegistrar(this Composition composition, Func<IFactory, IServerRegistrar> factory)
{
2018-11-28 11:05:41 +01:00
composition.RegisterSingleton(factory);
}
/// <summary>
/// Sets the server registrar.
/// </summary>
/// <param name="composition">The composition.</param>
/// <param name="registrar">A server registrar.</param>
public static void SetServerRegistrar(this Composition composition, IServerRegistrar registrar)
{
2018-11-28 11:05:41 +01:00
composition.RegisterSingleton(_ => registrar);
}
/// <summary>
/// Sets the server messenger.
/// </summary>
/// <typeparam name="T">The type of the server registrar.</typeparam>
/// <param name="composition">The composition.</param>
public static void SetServerMessenger<T>(this Composition composition)
where T : IServerMessenger
{
2018-11-28 11:05:41 +01:00
composition.Register<IServerMessenger, T>(Lifetime.Singleton);
}
/// <summary>
/// Sets the server messenger.
/// </summary>
/// <param name="composition">The composition.</param>
/// <param name="factory">A function creating a server messenger.</param>
2018-11-28 11:05:41 +01:00
public static void SetServerMessenger(this Composition composition, Func<IFactory, IServerMessenger> factory)
{
2018-11-28 11:05:41 +01:00
composition.RegisterSingleton(factory);
}
/// <summary>
/// Sets the server messenger.
/// </summary>
/// <param name="composition">The composition.</param>
/// <param name="registrar">A server messenger.</param>
public static void SetServerMessenger(this Composition composition, IServerMessenger registrar)
{
2018-11-28 11:05:41 +01:00
composition.RegisterSingleton(_ => registrar);
}
/// <summary>
/// Sets the short string helper.
/// </summary>
/// <typeparam name="T">The type of the short string helper.</typeparam>
/// <param name="composition">The composition.</param>
public static void SetShortStringHelper<T>(this Composition composition)
where T : IShortStringHelper
{
2018-11-28 11:05:41 +01:00
composition.RegisterSingleton<IShortStringHelper, T>();
}
/// <summary>
/// Sets the short string helper.
/// </summary>
/// <param name="composition">The composition.</param>
/// <param name="factory">A function creating a short string helper.</param>
2018-11-28 11:05:41 +01:00
public static void SetShortStringHelper(this Composition composition, Func<IFactory, IShortStringHelper> factory)
{
2018-11-28 11:05:41 +01:00
composition.RegisterSingleton(factory);
}
/// <summary>
/// Sets the short string helper.
/// </summary>
/// <param name="composition">A composition.</param>
/// <param name="helper">A short string helper.</param>
public static void SetShortStringHelper(this Composition composition, IShortStringHelper helper)
{
2018-11-28 11:05:41 +01:00
composition.RegisterSingleton(_ => helper);
}
#endregion
}
2017-07-20 11:21:28 +02:00
}