Convert main static references off of Electron into interface implementation and expose the underlying Socket for low level interaction.

This commit is contained in:
Daniel Gidman
2021-12-06 16:44:31 -06:00
parent c2a8c627b9
commit 1b14bb0fe5
36 changed files with 1960 additions and 18 deletions

25
ElectronNET.API/ServiceCollectionExtensions.cs Normal file → Executable file
View File

@@ -1,4 +1,5 @@
using Microsoft.Extensions.DependencyInjection;
using ElectronNET.API.Interfaces;
using Microsoft.Extensions.DependencyInjection;
namespace ElectronNET.API
{
@@ -13,6 +14,7 @@ namespace ElectronNET.API
public static IServiceCollection AddElectron(this IServiceCollection services)
=> services
// adding in this manner to ensure late binding.
// this set for backwards compatibility
.AddSingleton(provider => IpcMain.Instance)
.AddSingleton(provider => App.Instance)
.AddSingleton(provider => AutoUpdater.Instance)
@@ -28,6 +30,25 @@ namespace ElectronNET.API
.AddSingleton(provider => HostHook.Instance)
.AddSingleton(provider => PowerMonitor.Instance)
.AddSingleton(provider => NativeTheme.Instance)
.AddSingleton(provider => Dock.Instance);
.AddSingleton(provider => Dock.Instance)
.AddSingleton(provider => new ApplicationSocket { Socket = BridgeConnector.Socket, })
// this set for proper dependency injection
.AddSingleton<IIpcMain>(provider => IpcMain.Instance)
.AddSingleton<IApp>(provider => App.Instance)
.AddSingleton<IAutoUpdater>(provider => AutoUpdater.Instance)
.AddSingleton<IWindowManager>(provider => WindowManager.Instance)
.AddSingleton<IMenu>(provider => Menu.Instance)
.AddSingleton<IDialog>(provider => Dialog.Instance)
.AddSingleton<INotification>(provider => Notification.Instance)
.AddSingleton<ITray>(provider => Tray.Instance)
.AddSingleton<IGlobalShortcut>(provider => GlobalShortcut.Instance)
.AddSingleton<IShell>(provider => Shell.Instance)
.AddSingleton<IScreen>(provider => Screen.Instance)
.AddSingleton<IClipboard>(provider => Clipboard.Instance)
.AddSingleton<IHostHook>(provider => HostHook.Instance)
.AddSingleton<IPowerMonitor>(provider => PowerMonitor.Instance)
.AddSingleton<INativeTheme>(provider => NativeTheme.Instance)
.AddSingleton<IDock>(provider => Dock.Instance)
.AddSingleton<IApplicationSocket>(provider => provider.GetService<ApplicationSocket>());
}
}