title: Custom bootstrapper from Caliburn.Micro.Bootstrapper, what is Bootstrapper<IContract> for?
body: <p>I have derived a custom bootstrapper from Caliburn.Micro.Bootstrapper, I notice it can take a generic type parameter - what is this for?</p>
  
  <pre><code>public class SimpleInjectorBootstrapper : Caliburn.Micro.Bootstrapper
  {
      private Container container;
  
      public SimpleInjectorBootstrapper()
      {
      }
  
      protected override void Configure()
      {
          this.container = new Container();
          this.container.Register&lt;IWindowManager, WindowManager&gt;();
          this.container.Register&lt;IEventAggregator, EventAggregator&gt;();
          this.container.Register&lt;IAppViewModel, AppViewModel&gt;();
      }
  
      protected override object GetInstance(Type serviceType, string key)
      {
          return this.container.GetInstance(serviceType);
      }
  
      protected override IEnumerable&lt;object&gt; GetAllInstances(Type serviceType)
      {
          return this.container.GetAllInstances(serviceType);
      }
  
      protected override void OnStartup(object sender, System.Windows.StartupEventArgs e)
      {
          base.OnStartup(sender, e);
          var appViewModel = this.container.GetInstance&lt;IAppViewModel&gt;();
          var windowManager = this.container.GetInstance&lt;IWindowManager&gt;();
          windowManager.ShowWindow(appViewModel);
      }
  }
  </code></pre>