using Umbraco.Core.Cache; using Umbraco.Core.Composing; using Umbraco.Core.Logging; using Umbraco.Core.Persistence; namespace Umbraco.Core { /// /// Provides extension methods to the class. /// public static class CompositionExtensions { #region Essentials /// /// Registers essential services. /// public static void RegisterEssentials(this Composition composition, ILogger logger, IProfiler profiler, IProfilingLogger profilingLogger, IMainDom mainDom, AppCaches appCaches, IUmbracoDatabaseFactory databaseFactory, TypeLoader typeLoader, IRuntimeState state) { composition.RegisterUnique(logger); composition.RegisterUnique(profiler); composition.RegisterUnique(profilingLogger); composition.RegisterUnique(mainDom); composition.RegisterUnique(appCaches); composition.RegisterUnique(databaseFactory); composition.RegisterUnique(factory => factory.GetInstance().SqlContext); composition.RegisterUnique(typeLoader); composition.RegisterUnique(state); } #endregion #region Unique /// /// Registers a unique service as its own implementation. /// public static void RegisterUnique(this Composition composition) => composition.RegisterUnique(typeof(TService), typeof(TService)); /// /// Registers a unique service with an implementation type. /// public static void RegisterUnique(this Composition composition) => composition.RegisterUnique(typeof(TService), typeof(TImplementing)); /// /// Registers a unique service with an implementation type, for a target. /// public static void RegisterUniqueFor(this Composition composition) where TService : class => composition.RegisterUniqueFor(typeof(TImplementing)); /// /// Registers a unique service with an implementing instance. /// public static void RegisterUnique(this Composition composition, TService instance) => composition.RegisterUnique(typeof(TService), instance); #endregion } }