using Inspectron.Settings; using Ninject; using Ninject.Extensions.ChildKernel; namespace VisionBuilder.UI.Common; public static class Extensions { public static void RegisterSettings(this IKernel self) { // get all types from kernel that implement ISettings var settingsTypes = self.GetAll(typeof(ISettings)).Select(x=>(ISettings)x).ToList(); // register each type as ISettings foreach (var settingsInstance in settingsTypes) { settingsInstance.RegisterSettings(self.Get()); } } public static void RegisterModule(this IKernel self) where T : IVisionBuilderModule { self.Bind().To().InSingletonScope(); } public static void InitializeModules(this IKernel self) { var serviceTypes = self.GetAll(typeof(IVisionBuilderModule)).Select(x => (IVisionBuilderModule)x).ToList(); foreach (var service in serviceTypes) { if (service != null) { service.InitializeModule(); } } } }