Add ServiceLocator so patches can access DI

This commit is contained in:
Archangel
2025-05-30 19:37:03 +02:00
parent 4e3c755e90
commit 6a9d323957
2 changed files with 25 additions and 0 deletions
@@ -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"));