Add ServiceLocator so patches can access DI
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
namespace SPTarkov.Server.Core.DI
|
||||
{
|
||||
/// <summary>
|
||||
/// A service locator designed specifically for Harmony patches and other
|
||||
/// parts of the application that do not have direct access to the Dependency Injection (DI) system.
|
||||
///
|
||||
/// This should not be used at all when having direct access to DI.
|
||||
/// </summary>
|
||||
public static class ServiceLocator
|
||||
{
|
||||
public static IServiceProvider ServiceProvider
|
||||
{
|
||||
get;
|
||||
private set;
|
||||
}
|
||||
|
||||
internal static void SetServiceProvider(IServiceProvider provider)
|
||||
{
|
||||
ServiceProvider = provider;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -11,6 +11,7 @@ namespace SPTarkov.Server.Core.Utils;
|
||||
|
||||
[Injectable(InjectionType.Singleton)]
|
||||
public class App(
|
||||
IServiceProvider _serviceProvider,
|
||||
ISptLogger<App> _logger,
|
||||
TimeUtil _timeUtil,
|
||||
RandomUtil _randomUtil,
|
||||
@@ -30,6 +31,8 @@ public class App(
|
||||
|
||||
public async Task InitializeAsync()
|
||||
{
|
||||
ServiceLocator.SetServiceProvider(_serviceProvider);
|
||||
|
||||
// execute onLoad callbacks
|
||||
_logger.Info(_localisationService.GetText("executing_startup_callbacks"));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user