NetCore: MSDI refactor remove IFactory & IRegister (#9308)
* Replace IFactory with IServiceProvider * Replace IRegister with IServiceCollection * Fix Rte.cshtml so the view can service locate. * Replace Composing Lifetime with MSDI ServiceLifetime * Remove ServiceProvider AddMultipleUnique extension * Remove Umbraco.Web.Composing.Current.Reset and any calls * Remove LightInject from net framework projects * Brought back a helper for setting MediaFileSystem underlying IFileSystem
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Umbraco.Core.Cache;
|
||||
using Umbraco.Core.Composing;
|
||||
using Umbraco.Core.Dictionary;
|
||||
@@ -111,9 +112,9 @@ namespace Umbraco.Core
|
||||
/// <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
|
||||
where T : class, ICultureDictionaryFactory
|
||||
{
|
||||
composition.RegisterUnique<ICultureDictionaryFactory, T>();
|
||||
composition.Services.AddUnique<ICultureDictionaryFactory, T>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -121,9 +122,9 @@ namespace Umbraco.Core
|
||||
/// </summary>
|
||||
/// <param name="composition">The composition.</param>
|
||||
/// <param name="factory">A function creating a culture dictionary factory.</param>
|
||||
public static void SetCultureDictionaryFactory(this Composition composition, Func<IFactory, ICultureDictionaryFactory> factory)
|
||||
public static void SetCultureDictionaryFactory(this Composition composition, Func<IServiceProvider, ICultureDictionaryFactory> factory)
|
||||
{
|
||||
composition.RegisterUnique(factory);
|
||||
composition.Services.AddUnique(factory);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -133,7 +134,7 @@ namespace Umbraco.Core
|
||||
/// <param name="factory">A factory.</param>
|
||||
public static void SetCultureDictionaryFactory(this Composition composition, ICultureDictionaryFactory factory)
|
||||
{
|
||||
composition.RegisterUnique(_ => factory);
|
||||
composition.Services.AddUnique(_ => factory);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -142,9 +143,9 @@ namespace Umbraco.Core
|
||||
/// <typeparam name="T">The type of the factory.</typeparam>
|
||||
/// <param name="composition">The composition.</param>
|
||||
public static void SetPublishedContentModelFactory<T>(this Composition composition)
|
||||
where T : IPublishedModelFactory
|
||||
where T : class, IPublishedModelFactory
|
||||
{
|
||||
composition.RegisterUnique<IPublishedModelFactory, T>();
|
||||
composition.Services.AddUnique<IPublishedModelFactory, T>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -152,9 +153,9 @@ namespace Umbraco.Core
|
||||
/// </summary>
|
||||
/// <param name="composition">The composition.</param>
|
||||
/// <param name="factory">A function creating a published content model factory.</param>
|
||||
public static void SetPublishedContentModelFactory(this Composition composition, Func<IFactory, IPublishedModelFactory> factory)
|
||||
public static void SetPublishedContentModelFactory(this Composition composition, Func<IServiceProvider, IPublishedModelFactory> factory)
|
||||
{
|
||||
composition.RegisterUnique(factory);
|
||||
composition.Services.AddUnique(factory);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -164,7 +165,7 @@ namespace Umbraco.Core
|
||||
/// <param name="factory">A published content model factory.</param>
|
||||
public static void SetPublishedContentModelFactory(this Composition composition, IPublishedModelFactory factory)
|
||||
{
|
||||
composition.RegisterUnique(_ => factory);
|
||||
composition.Services.AddUnique(_ => factory);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -173,9 +174,9 @@ namespace Umbraco.Core
|
||||
/// <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
|
||||
where T : class, IServerRegistrar
|
||||
{
|
||||
composition.RegisterUnique<IServerRegistrar, T>();
|
||||
composition.Services.AddUnique<IServerRegistrar, T>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -183,9 +184,9 @@ namespace Umbraco.Core
|
||||
/// </summary>
|
||||
/// <param name="composition">The composition.</param>
|
||||
/// <param name="factory">A function creating a server registrar.</param>
|
||||
public static void SetServerRegistrar(this Composition composition, Func<IFactory, IServerRegistrar> factory)
|
||||
public static void SetServerRegistrar(this Composition composition, Func<IServiceProvider, IServerRegistrar> factory)
|
||||
{
|
||||
composition.RegisterUnique(factory);
|
||||
composition.Services.AddUnique(factory);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -195,7 +196,7 @@ namespace Umbraco.Core
|
||||
/// <param name="registrar">A server registrar.</param>
|
||||
public static void SetServerRegistrar(this Composition composition, IServerRegistrar registrar)
|
||||
{
|
||||
composition.RegisterUnique(_ => registrar);
|
||||
composition.Services.AddUnique(_ => registrar);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -204,9 +205,9 @@ namespace Umbraco.Core
|
||||
/// <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
|
||||
where T : class, IServerMessenger
|
||||
{
|
||||
composition.RegisterUnique<IServerMessenger, T>();
|
||||
composition.Services.AddUnique<IServerMessenger, T>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -214,9 +215,9 @@ namespace Umbraco.Core
|
||||
/// </summary>
|
||||
/// <param name="composition">The composition.</param>
|
||||
/// <param name="factory">A function creating a server messenger.</param>
|
||||
public static void SetServerMessenger(this Composition composition, Func<IFactory, IServerMessenger> factory)
|
||||
public static void SetServerMessenger(this Composition composition, Func<IServiceProvider, IServerMessenger> factory)
|
||||
{
|
||||
composition.RegisterUnique(factory);
|
||||
composition.Services.AddUnique(factory);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -226,7 +227,7 @@ namespace Umbraco.Core
|
||||
/// <param name="registrar">A server messenger.</param>
|
||||
public static void SetServerMessenger(this Composition composition, IServerMessenger registrar)
|
||||
{
|
||||
composition.RegisterUnique(_ => registrar);
|
||||
composition.Services.AddUnique(_ => registrar);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -235,9 +236,9 @@ namespace Umbraco.Core
|
||||
/// <param name="composition">The composition.</param>
|
||||
/// <param name="factory">A function creating the options.</param>
|
||||
/// <remarks>Use DatabaseServerRegistrarAndMessengerComposer.GetDefaultOptions to get the options that Umbraco would use by default.</remarks>
|
||||
public static void SetDatabaseServerMessengerOptions(this Composition composition, Func<IFactory, DatabaseServerMessengerOptions> factory)
|
||||
public static void SetDatabaseServerMessengerOptions(this Composition composition, Func<IServiceProvider, DatabaseServerMessengerOptions> factory)
|
||||
{
|
||||
composition.RegisterUnique(factory);
|
||||
composition.Services.AddUnique(factory);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -248,7 +249,7 @@ namespace Umbraco.Core
|
||||
/// <remarks>Use DatabaseServerRegistrarAndMessengerComposer.GetDefaultOptions to get the options that Umbraco would use by default.</remarks>
|
||||
public static void SetDatabaseServerMessengerOptions(this Composition composition, DatabaseServerMessengerOptions options)
|
||||
{
|
||||
composition.RegisterUnique(_ => options);
|
||||
composition.Services.AddUnique(_ => options);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -257,9 +258,9 @@ namespace Umbraco.Core
|
||||
/// <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
|
||||
where T : class, IShortStringHelper
|
||||
{
|
||||
composition.RegisterUnique<IShortStringHelper, T>();
|
||||
composition.Services.AddUnique<IShortStringHelper, T>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -267,9 +268,9 @@ namespace Umbraco.Core
|
||||
/// </summary>
|
||||
/// <param name="composition">The composition.</param>
|
||||
/// <param name="factory">A function creating a short string helper.</param>
|
||||
public static void SetShortStringHelper(this Composition composition, Func<IFactory, IShortStringHelper> factory)
|
||||
public static void SetShortStringHelper(this Composition composition, Func<IServiceProvider, IShortStringHelper> factory)
|
||||
{
|
||||
composition.RegisterUnique(factory);
|
||||
composition.Services.AddUnique(factory);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -279,18 +280,33 @@ namespace Umbraco.Core
|
||||
/// <param name="helper">A short string helper.</param>
|
||||
public static void SetShortStringHelper(this Composition composition, IShortStringHelper helper)
|
||||
{
|
||||
composition.RegisterUnique(_ => helper);
|
||||
composition.Services.AddUnique(_ => helper);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sets the underlying media filesystem.
|
||||
/// </summary>
|
||||
/// <param name="composition">A composition.</param>
|
||||
/// <param name="filesystemFactory">A filesystem factory.</param>
|
||||
/// <remarks>
|
||||
/// Using this helper will ensure that your IFileSystem implementation is wrapped by the ShadowWrapper
|
||||
/// </remarks>
|
||||
public static void SetMediaFileSystem(this Composition composition, Func<IServiceProvider, IFileSystem> filesystemFactory)
|
||||
=> composition.Services.AddUnique<IMediaFileSystem>(factory =>
|
||||
{
|
||||
var fileSystems = factory.GetRequiredService<IO.FileSystems>();
|
||||
return fileSystems.GetFileSystem<MediaFileSystem>(filesystemFactory(factory));
|
||||
});
|
||||
|
||||
/// <summary>
|
||||
/// Sets the log viewer.
|
||||
/// </summary>
|
||||
/// <typeparam name="T">The type of the log viewer.</typeparam>
|
||||
/// <param name="composition">The composition.</param>
|
||||
public static void SetLogViewer<T>(this Composition composition)
|
||||
where T : ILogViewer
|
||||
where T : class, ILogViewer
|
||||
{
|
||||
composition.RegisterUnique<ILogViewer, T>();
|
||||
composition.Services.AddUnique<ILogViewer, T>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -298,9 +314,9 @@ namespace Umbraco.Core
|
||||
/// </summary>
|
||||
/// <param name="composition">The composition.</param>
|
||||
/// <param name="factory">A function creating a log viewer.</param>
|
||||
public static void SetLogViewer(this Composition composition, Func<IFactory, ILogViewer> factory)
|
||||
public static void SetLogViewer(this Composition composition, Func<IServiceProvider, ILogViewer> factory)
|
||||
{
|
||||
composition.RegisterUnique(factory);
|
||||
composition.Services.AddUnique(factory);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -310,7 +326,7 @@ namespace Umbraco.Core
|
||||
/// <param name="helper">A log viewer.</param>
|
||||
public static void SetLogViewer(this Composition composition, ILogViewer viewer)
|
||||
{
|
||||
composition.RegisterUnique(_ => viewer);
|
||||
composition.Services.AddUnique(_ => viewer);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
Reference in New Issue
Block a user