public override void Load()
{
Kernel.Components.Add<IActivationStrategy, ActivationStrategy>();
// Singletone services
Bind<IEnvironmentManager>().To<EnvironmentManager>().InSingletonScope().OnActivation(m => m.Initialize());
Bind<IWindowManager>().To<WindowManager>().InSingletonScope().OnActivation(m => m.Initialize());
Bind<IProfileManager>().To<ProfileManager>().InSingletonScope().OnActivation(m => m.Initialize());
Bind<IDialogManager>().To<DialogManager>().InSingletonScope().OnActivation(m => m.Initialize());
Bind<ILanguageManager>().To<LanguageManager>().InSingletonScope().OnActivation(m => m.Initialize());
Bind<ILogManager>().To<LogManager>().InSingletonScope().OnActivation(m => m.Initialize());
Bind<ITaskManager>().To<TaskManager>().InSingletonScope().OnActivation(m => m.Initialize());
Bind<IDatabaseManager>().To<DatabaseManager>().InSingletonScope().OnActivation(m => m.Initialize());
Bind<IFileSystemManager>().To<FileSystemManager>().OnActivation(m => m.Initialize(App.Kernel.Get<ILogManager>()));
// Launchers
Bind<LauncherManager>().ToSelf().InSingletonScope().OnActivation(m => m.Initialize());
Kernel.Bind(e => {
e.FromThisAssembly()
.SelectAllClasses()
.InheritedFrom<ILauncher>()
.BindAllInterfaces()
.Configure(c => c.InSingletonScope());
});
// Commands
Bind<ICommandManager>().To<CommandManager>().InSingletonScope().OnActivation(m => m.Initialize());
Kernel.Bind(e => {
e.FromThisAssembly()
.SelectAllClasses()
.InNamespaceOf<EchoCommand>()
.InheritedFrom<ICommand>()
.BindAllInterfaces()
.Configure(c => c.InSingletonScope());
});
// Game Configurations
Bind<IConfigurationManager>().To<ConfigurationManager>().InSingletonScope().OnActivation(m => m.Initialize());
Kernel.Bind(e => {
e.FromThisAssembly()
.SelectAllClasses()
.InheritedFrom<IConfiguration>()
.BindAllInterfaces()
.Configure(c => c.InSingletonScope());
});
// Components
Bind<MainWindow>().ToSelf().InSingletonScope(); // be careful with injecting this on initialization of MainWindow itself (UserControls, etc)
Bind<WebWindow>().ToSelf();
Bind<Logger>().ToSelf().InSingletonScope();
Bind<About>().ToSelf().InSingletonScope();
Bind<Settings>().ToSelf().InSingletonScope();
Bind<Splashscreen>().ToSelf().InSingletonScope();
Bind<LoginManager>().ToSelf().InSingletonScope();
Bind<ProxyManager>().ToSelf().InSingletonScope();
Bind<IconHolder>().ToSelf().InSingletonScope();
Bind<MergeHelper>().ToSelf();
Bind<UpdateManager>().ToSelf();
// Plugin System
Bind<PluginManager>().To<PluginManager>().InSingletonScope();
Bind<IPluginHost>().To<PluginHost>().InSingletonScope().OnActivation(m => m.Initialize());
}