Make RegisterIoC()s take in IDependencyCollection instead.

Need this for LSP, but also just avoids all the TLS loading.
This commit is contained in:
Pieter-Jan Briers
2022-08-14 00:48:09 +02:00
parent 55949f41ce
commit 7de7ef085c
9 changed files with 145 additions and 145 deletions

View File

@@ -13,7 +13,7 @@ namespace Robust.Benchmarks.Serialization
public SerializationBenchmark()
{
IoCManager.InitThread();
ServerIoC.RegisterIoC();
ServerIoC.RegisterIoC(IoCManager.Instance!);
IoCManager.BuildGraph();
var assemblies = new[]

View File

@@ -37,85 +37,85 @@ namespace Robust.Client
{
internal static class ClientIoC
{
public static void RegisterIoC(GameController.DisplayMode mode)
public static void RegisterIoC(GameController.DisplayMode mode, IDependencyCollection deps)
{
SharedIoC.RegisterIoC();
SharedIoC.RegisterIoC(deps);
IoCManager.Register<IGameTiming, ClientGameTiming>();
IoCManager.Register<IClientGameTiming, ClientGameTiming>();
IoCManager.Register<IPrototypeManager, ClientPrototypeManager>();
IoCManager.Register<IMapManager, NetworkedMapManager>();
IoCManager.Register<IMapManagerInternal, NetworkedMapManager>();
IoCManager.Register<INetworkedMapManager, NetworkedMapManager>();
IoCManager.Register<IEntityManager, ClientEntityManager>();
IoCManager.Register<IReflectionManager, ClientReflectionManager>();
IoCManager.Register<IConsoleHost, ClientConsoleHost>();
IoCManager.Register<IClientConsoleHost, ClientConsoleHost>();
IoCManager.Register<IComponentFactory, ClientComponentFactory>();
IoCManager.Register<ITileDefinitionManager, ClydeTileDefinitionManager>();
IoCManager.Register<IClydeTileDefinitionManager, ClydeTileDefinitionManager>();
IoCManager.Register<GameController, GameController>();
IoCManager.Register<IGameController, GameController>();
IoCManager.Register<IGameControllerInternal, GameController>();
IoCManager.Register<IResourceManager, ResourceCache>();
IoCManager.Register<IResourceManagerInternal, ResourceCache>();
IoCManager.Register<IResourceCache, ResourceCache>();
IoCManager.Register<IResourceCacheInternal, ResourceCache>();
IoCManager.Register<IClientNetManager, NetManager>();
IoCManager.Register<EntityManager, ClientEntityManager>();
IoCManager.Register<ClientEntityManager>();
IoCManager.Register<IClientEntityManager, ClientEntityManager>();
IoCManager.Register<IClientEntityManagerInternal, ClientEntityManager>();
IoCManager.Register<IEntityNetworkManager, ClientEntityManager>();
IoCManager.Register<IClientGameStateManager, ClientGameStateManager>();
IoCManager.Register<IBaseClient, BaseClient>();
IoCManager.Register<IPlayerManager, PlayerManager>();
IoCManager.Register<ISharedPlayerManager, PlayerManager>();
IoCManager.Register<IStateManager, StateManager>();
IoCManager.Register<IUserInterfaceManager, UserInterfaceManager>();
IoCManager.Register<IUserInterfaceManagerInternal, UserInterfaceManager>();
IoCManager.Register<ILightManager, LightManager>();
IoCManager.Register<IDiscordRichPresence, DiscordRichPresence>();
IoCManager.Register<IMidiManager, MidiManager>();
IoCManager.Register<IAuthManager, AuthManager>();
IoCManager.Register<ProfViewManager>();
IoCManager.Register<IPhysicsManager, PhysicsManager>();
deps.Register<IGameTiming, ClientGameTiming>();
deps.Register<IClientGameTiming, ClientGameTiming>();
deps.Register<IPrototypeManager, ClientPrototypeManager>();
deps.Register<IMapManager, NetworkedMapManager>();
deps.Register<IMapManagerInternal, NetworkedMapManager>();
deps.Register<INetworkedMapManager, NetworkedMapManager>();
deps.Register<IEntityManager, ClientEntityManager>();
deps.Register<IReflectionManager, ClientReflectionManager>();
deps.Register<IConsoleHost, ClientConsoleHost>();
deps.Register<IClientConsoleHost, ClientConsoleHost>();
deps.Register<IComponentFactory, ClientComponentFactory>();
deps.Register<ITileDefinitionManager, ClydeTileDefinitionManager>();
deps.Register<IClydeTileDefinitionManager, ClydeTileDefinitionManager>();
deps.Register<GameController, GameController>();
deps.Register<IGameController, GameController>();
deps.Register<IGameControllerInternal, GameController>();
deps.Register<IResourceManager, ResourceCache>();
deps.Register<IResourceManagerInternal, ResourceCache>();
deps.Register<IResourceCache, ResourceCache>();
deps.Register<IResourceCacheInternal, ResourceCache>();
deps.Register<IClientNetManager, NetManager>();
deps.Register<EntityManager, ClientEntityManager>();
deps.Register<ClientEntityManager>();
deps.Register<IClientEntityManager, ClientEntityManager>();
deps.Register<IClientEntityManagerInternal, ClientEntityManager>();
deps.Register<IEntityNetworkManager, ClientEntityManager>();
deps.Register<IClientGameStateManager, ClientGameStateManager>();
deps.Register<IBaseClient, BaseClient>();
deps.Register<IPlayerManager, PlayerManager>();
deps.Register<ISharedPlayerManager, PlayerManager>();
deps.Register<IStateManager, StateManager>();
deps.Register<IUserInterfaceManager, UserInterfaceManager>();
deps.Register<IUserInterfaceManagerInternal, UserInterfaceManager>();
deps.Register<ILightManager, LightManager>();
deps.Register<IDiscordRichPresence, DiscordRichPresence>();
deps.Register<IMidiManager, MidiManager>();
deps.Register<IAuthManager, AuthManager>();
deps.Register<ProfViewManager>();
deps.Register<IPhysicsManager, PhysicsManager>();
switch (mode)
{
case GameController.DisplayMode.Headless:
IoCManager.Register<IClyde, ClydeHeadless>();
IoCManager.Register<IClipboardManager, ClydeHeadless>();
IoCManager.Register<IClydeInternal, ClydeHeadless>();
IoCManager.Register<IClydeAudio, ClydeAudioHeadless>();
IoCManager.Register<IClydeAudioInternal, ClydeAudioHeadless>();
IoCManager.Register<IInputManager, InputManager>();
IoCManager.Register<IFileDialogManager, DummyFileDialogManager>();
IoCManager.Register<IUriOpener, UriOpenerDummy>();
deps.Register<IClyde, ClydeHeadless>();
deps.Register<IClipboardManager, ClydeHeadless>();
deps.Register<IClydeInternal, ClydeHeadless>();
deps.Register<IClydeAudio, ClydeAudioHeadless>();
deps.Register<IClydeAudioInternal, ClydeAudioHeadless>();
deps.Register<IInputManager, InputManager>();
deps.Register<IFileDialogManager, DummyFileDialogManager>();
deps.Register<IUriOpener, UriOpenerDummy>();
break;
case GameController.DisplayMode.Clyde:
IoCManager.Register<IClyde, Clyde>();
IoCManager.Register<IClipboardManager, Clyde>();
IoCManager.Register<IClydeInternal, Clyde>();
IoCManager.Register<IClydeAudio, FallbackProxyClydeAudio>();
IoCManager.Register<IClydeAudioInternal, FallbackProxyClydeAudio>();
IoCManager.Register<IInputManager, ClydeInputManager>();
IoCManager.Register<IFileDialogManager, FileDialogManager>();
IoCManager.Register<IUriOpener, UriOpener>();
deps.Register<IClyde, Clyde>();
deps.Register<IClipboardManager, Clyde>();
deps.Register<IClydeInternal, Clyde>();
deps.Register<IClydeAudio, FallbackProxyClydeAudio>();
deps.Register<IClydeAudioInternal, FallbackProxyClydeAudio>();
deps.Register<IInputManager, ClydeInputManager>();
deps.Register<IFileDialogManager, FileDialogManager>();
deps.Register<IUriOpener, UriOpener>();
break;
default:
throw new ArgumentOutOfRangeException();
}
IoCManager.Register<IFontManager, FontManager>();
IoCManager.Register<IFontManagerInternal, FontManager>();
IoCManager.Register<IEyeManager, EyeManager>();
IoCManager.Register<IPlacementManager, PlacementManager>();
IoCManager.Register<IOverlayManager, OverlayManager>();
IoCManager.Register<IOverlayManagerInternal, OverlayManager>();
IoCManager.Register<IViewVariablesManager, ViewVariablesManager>();
IoCManager.Register<IViewVariablesManagerInternal, ViewVariablesManager>();
IoCManager.Register<IClientConGroupController, ClientConGroupController>();
IoCManager.Register<IScriptClient, ScriptClient>();
deps.Register<IFontManager, FontManager>();
deps.Register<IFontManagerInternal, FontManager>();
deps.Register<IEyeManager, EyeManager>();
deps.Register<IPlacementManager, PlacementManager>();
deps.Register<IOverlayManager, OverlayManager>();
deps.Register<IOverlayManagerInternal, OverlayManager>();
deps.Register<IViewVariablesManager, ViewVariablesManager>();
deps.Register<IViewVariablesManagerInternal, ViewVariablesManager>();
deps.Register<IClientConGroupController, ClientConGroupController>();
deps.Register<IScriptClient, ScriptClient>();
}
}
}

View File

@@ -10,9 +10,9 @@ namespace Robust.Client
// Partial of GameController to initialize IoC and some other low-level systems like it.
internal sealed partial class GameController
{
private static void InitIoC(DisplayMode mode)
private static void InitIoC(DisplayMode mode, IDependencyCollection deps)
{
ClientIoC.RegisterIoC(mode);
ClientIoC.RegisterIoC(mode, deps);
IoCManager.BuildGraph();
RegisterReflection();
}

View File

@@ -48,7 +48,7 @@ namespace Robust.Client
var mode = args.Headless ? DisplayMode.Headless : DisplayMode.Clyde;
InitIoC(mode);
InitIoC(mode, IoCManager.Instance!);
var gc = IoCManager.Resolve<GameController>();
gc.SetCommandLineArgs(args);

View File

@@ -50,7 +50,7 @@ namespace Robust.Server
{
Thread.CurrentThread.Name = "Main Thread";
IoCManager.InitThread();
ServerIoC.RegisterIoC();
ServerIoC.RegisterIoC(IoCManager.Instance!);
IoCManager.BuildGraph();
SetupLogging();
InitReflectionManager();

View File

@@ -31,50 +31,50 @@ namespace Robust.Server
internal static class ServerIoC
{
/// <summary>
/// Registers all the types into the <see cref="IoCManager"/> with <see cref="IoCManager.Register{TInterface, TImplementation}"/>
/// Registers all the types into the <see cref="IDependencyCollection"/>
/// </summary>
internal static void RegisterIoC()
internal static void RegisterIoC(IDependencyCollection deps)
{
SharedIoC.RegisterIoC();
SharedIoC.RegisterIoC(deps);
IoCManager.Register<IBaseServer, BaseServer>();
IoCManager.Register<IBaseServerInternal, BaseServer>();
IoCManager.Register<BaseServer, BaseServer>();
IoCManager.Register<IGameTiming, GameTiming>();
IoCManager.Register<IReflectionManager, ServerReflectionManager>();
IoCManager.Register<IConsoleHost, ServerConsoleHost>();
IoCManager.Register<IServerConsoleHost, ServerConsoleHost>();
IoCManager.Register<IComponentFactory, ServerComponentFactory>();
IoCManager.Register<IConGroupController, ConGroupController>();
IoCManager.Register<IMapManager, NetworkedMapManager>();
IoCManager.Register<IMapManagerInternal, NetworkedMapManager>();
IoCManager.Register<INetworkedMapManager, NetworkedMapManager>();
IoCManager.Register<IEntityManager, ServerEntityManager>();
IoCManager.Register<IEntityNetworkManager, ServerEntityManager>();
IoCManager.Register<IServerEntityNetworkManager, ServerEntityManager>();
IoCManager.Register<IMapLoader, MapLoader>();
IoCManager.Register<IPlacementManager, PlacementManager>();
IoCManager.Register<IPlayerManager, PlayerManager>();
IoCManager.Register<ISharedPlayerManager, PlayerManager>();
IoCManager.Register<IPrototypeManager, ServerPrototypeManager>();
IoCManager.Register<IResourceManager, ResourceManager>();
IoCManager.Register<IResourceManagerInternal, ResourceManager>();
IoCManager.Register<EntityManager, ServerEntityManager>();
IoCManager.Register<IServerEntityManager, ServerEntityManager>();
IoCManager.Register<IServerEntityManagerInternal, ServerEntityManager>();
IoCManager.Register<IServerGameStateManager, ServerGameStateManager>();
IoCManager.Register<IServerNetManager, NetManager>();
IoCManager.Register<IStatusHost, StatusHost>();
IoCManager.Register<ISystemConsoleManager, SystemConsoleManager>();
IoCManager.Register<ITileDefinitionManager, TileDefinitionManager>();
IoCManager.Register<IViewVariablesHost, ViewVariablesHost>();
IoCManager.Register<IWatchdogApi, WatchdogApi>();
IoCManager.Register<IScriptHost, ScriptHost>();
IoCManager.Register<IMetricsManager, MetricsManager>();
IoCManager.Register<IAuthManager, AuthManager>();
IoCManager.Register<IPhysicsManager, PhysicsManager>();
IoCManager.Register<IBqlQueryManager, BqlQueryManager>();
IoCManager.Register<HubManager, HubManager>();
deps.Register<IBaseServer, BaseServer>();
deps.Register<IBaseServerInternal, BaseServer>();
deps.Register<BaseServer, BaseServer>();
deps.Register<IGameTiming, GameTiming>();
deps.Register<IReflectionManager, ServerReflectionManager>();
deps.Register<IConsoleHost, ServerConsoleHost>();
deps.Register<IServerConsoleHost, ServerConsoleHost>();
deps.Register<IComponentFactory, ServerComponentFactory>();
deps.Register<IConGroupController, ConGroupController>();
deps.Register<IMapManager, NetworkedMapManager>();
deps.Register<IMapManagerInternal, NetworkedMapManager>();
deps.Register<INetworkedMapManager, NetworkedMapManager>();
deps.Register<IEntityManager, ServerEntityManager>();
deps.Register<IEntityNetworkManager, ServerEntityManager>();
deps.Register<IServerEntityNetworkManager, ServerEntityManager>();
deps.Register<IMapLoader, MapLoader>();
deps.Register<IPlacementManager, PlacementManager>();
deps.Register<IPlayerManager, PlayerManager>();
deps.Register<ISharedPlayerManager, PlayerManager>();
deps.Register<IPrototypeManager, ServerPrototypeManager>();
deps.Register<IResourceManager, ResourceManager>();
deps.Register<IResourceManagerInternal, ResourceManager>();
deps.Register<EntityManager, ServerEntityManager>();
deps.Register<IServerEntityManager, ServerEntityManager>();
deps.Register<IServerEntityManagerInternal, ServerEntityManager>();
deps.Register<IServerGameStateManager, ServerGameStateManager>();
deps.Register<IServerNetManager, NetManager>();
deps.Register<IStatusHost, StatusHost>();
deps.Register<ISystemConsoleManager, SystemConsoleManager>();
deps.Register<ITileDefinitionManager, TileDefinitionManager>();
deps.Register<IViewVariablesHost, ViewVariablesHost>();
deps.Register<IWatchdogApi, WatchdogApi>();
deps.Register<IScriptHost, ScriptHost>();
deps.Register<IMetricsManager, MetricsManager>();
deps.Register<IAuthManager, AuthManager>();
deps.Register<IPhysicsManager, PhysicsManager>();
deps.Register<IBqlQueryManager, BqlQueryManager>();
deps.Register<HubManager, HubManager>();
}
}
}

View File

@@ -22,35 +22,35 @@ namespace Robust.Shared
{
internal static class SharedIoC
{
public static void RegisterIoC()
public static void RegisterIoC(IDependencyCollection deps)
{
IoCManager.Register<ISerializationManager, SerializationManager>();
IoCManager.Register<IConfigurationManager, NetConfigurationManager>();
IoCManager.Register<INetConfigurationManager, NetConfigurationManager>();
IoCManager.Register<IConfigurationManagerInternal, NetConfigurationManager>();
IoCManager.Register<IDynamicTypeFactory, DynamicTypeFactory>();
IoCManager.Register<IDynamicTypeFactoryInternal, DynamicTypeFactory>();
IoCManager.Register<IEntitySystemManager, EntitySystemManager>();
IoCManager.Register<ILocalizationManager, LocalizationManager>();
IoCManager.Register<ILocalizationManagerInternal, LocalizationManager>();
IoCManager.Register<ILogManager, LogManager>();
IoCManager.Register<IModLoader, ModLoader>();
IoCManager.Register<IModLoaderInternal, ModLoader>();
IoCManager.Register<INetManager, NetManager>();
IoCManager.Register<IRobustSerializer, RobustSerializer>();
IoCManager.Register<IRuntimeLog, RuntimeLog>();
IoCManager.Register<ITaskManager, TaskManager>();
IoCManager.Register<TaskManager, TaskManager>();
IoCManager.Register<ITimerManager, TimerManager>();
IoCManager.Register<ProfManager, ProfManager>();
IoCManager.Register<IRobustRandom, RobustRandom>();
IoCManager.Register<IRobustMappedStringSerializer, RobustMappedStringSerializer>();
IoCManager.Register<ISandboxHelper, SandboxHelper>();
IoCManager.Register<IManifoldManager, CollisionManager>();
IoCManager.Register<IIslandManager, IslandManager>();
IoCManager.Register<IVerticesSimplifier, RamerDouglasPeuckerSimplifier>();
IoCManager.Register<IParallelManager, ParallelManager>();
IoCManager.Register<IParallelManagerInternal, ParallelManager>();
deps.Register<ISerializationManager, SerializationManager>();
deps.Register<IConfigurationManager, NetConfigurationManager>();
deps.Register<INetConfigurationManager, NetConfigurationManager>();
deps.Register<IConfigurationManagerInternal, NetConfigurationManager>();
deps.Register<IDynamicTypeFactory, DynamicTypeFactory>();
deps.Register<IDynamicTypeFactoryInternal, DynamicTypeFactory>();
deps.Register<IEntitySystemManager, EntitySystemManager>();
deps.Register<ILocalizationManager, LocalizationManager>();
deps.Register<ILocalizationManagerInternal, LocalizationManager>();
deps.Register<ILogManager, LogManager>();
deps.Register<IModLoader, ModLoader>();
deps.Register<IModLoaderInternal, ModLoader>();
deps.Register<INetManager, NetManager>();
deps.Register<IRobustSerializer, RobustSerializer>();
deps.Register<IRuntimeLog, RuntimeLog>();
deps.Register<ITaskManager, TaskManager>();
deps.Register<TaskManager, TaskManager>();
deps.Register<ITimerManager, TimerManager>();
deps.Register<ProfManager, ProfManager>();
deps.Register<IRobustRandom, RobustRandom>();
deps.Register<IRobustMappedStringSerializer, RobustMappedStringSerializer>();
deps.Register<ISandboxHelper, SandboxHelper>();
deps.Register<IManifoldManager, CollisionManager>();
deps.Register<IIslandManager, IslandManager>();
deps.Register<IVerticesSimplifier, RamerDouglasPeuckerSimplifier>();
deps.Register<IParallelManager, ParallelManager>();
deps.Register<IParallelManagerInternal, ParallelManager>();
}
}
}

View File

@@ -586,7 +586,7 @@ namespace Robust.UnitTesting
private BaseServer Init()
{
IoCManager.InitThread(DependencyCollection, replaceExisting: true);
ServerIoC.RegisterIoC();
ServerIoC.RegisterIoC(DependencyCollection);
IoCManager.Register<INetManager, IntegrationNetManager>(true);
IoCManager.Register<IServerNetManager, IntegrationNetManager>(true);
IoCManager.Register<IntegrationNetManager, IntegrationNetManager>(true);
@@ -732,7 +732,7 @@ namespace Robust.UnitTesting
private GameController Init()
{
IoCManager.InitThread(DependencyCollection, replaceExisting: true);
ClientIoC.RegisterIoC(GameController.DisplayMode.Headless);
ClientIoC.RegisterIoC(GameController.DisplayMode.Headless, DependencyCollection);
IoCManager.Register<INetManager, IntegrationNetManager>(true);
IoCManager.Register<IClientNetManager, IntegrationNetManager>(true);
IoCManager.Register<IntegrationNetManager, IntegrationNetManager>(true);

View File

@@ -16,11 +16,11 @@ namespace Robust.UnitTesting
switch (Project)
{
case UnitTestProject.Client:
ClientIoC.RegisterIoC(GameController.DisplayMode.Headless);
ClientIoC.RegisterIoC(GameController.DisplayMode.Headless, IoCManager.Instance!);
break;
case UnitTestProject.Server:
ServerIoC.RegisterIoC();
ServerIoC.RegisterIoC(IoCManager.Instance!);
break;
default: