using Ninject; using Stylet; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Bootstrappers { public class NinjectBootstrapper : BootstrapperBase where TRootViewModel : class { private IKernel kernel; protected override void ConfigureBootstrapper() { this.Configure(); this.kernel = new StandardKernel(); this.DefaultConfigureIoC(this.kernel); this.ConfigureIoC(this.kernel); } /// /// Override to configure your IoC container, and anything else /// protected virtual void Configure() { } /// /// Carries out default configuration of the IoC container. Override if you don't want to do this /// protected virtual void DefaultConfigureIoC(IKernel kernel) { var viewManager = new ViewManager(this.Assemblies, type => kernel.Get(type)); kernel.Bind().ToConstant(viewManager); kernel.Bind().ToConstant(new WindowManager(viewManager, () => kernel.Get())); kernel.Bind().To().InSingletonScope(); kernel.Bind().To(); // Not singleton! } /// /// Override to add your own types to the IoC container. /// protected virtual void ConfigureIoC(IKernel kernel) { } protected override T GetInstance() { return this.kernel.Get(); } } }