public void Configure(Container container) { container.Options.PropertySelectionBehavior = new PropertyInjectionForType <ILog>(container); // Keep the type so that it is clear what is being registered here. container.RegisterSingleton(() => LoggingConfig.Setup(container.GetInstance <LogForm>().TextBox)); container.RegisterConditional( typeof(ILog), typeFactory => typeof(SerilogRobe <>).MakeGenericType(typeFactory.Consumer.ImplementationType), Lifestyle.Singleton, predicateContext => predicateContext.Consumer != null); container.RegisterConditional( typeof(ILog), typeFactory => typeof(SerilogRobe), Lifestyle.Singleton, predicateContext => predicateContext.Consumer == null); container.RegisterSingleton <IResponseParser, CoreResponseParser>(); container.RegisterSingleton <ICoreLinkFactory, CoreLinkFactory>(); container.RegisterSingleton <ICoreControllerFactory, CoreControllerFactory>(); container.RegisterSingleton <ICoreProcessFactory, CoreProcessFactory>(); container.RegisterSingleton <ICoreProxyFactory, CoreProxyFactory>(); container.RegisterSingleton <ICharmdRunner, CharmdRunner>(); container.RegisterSingleton <IModelDiffApplier, ModelDiffApplier>(); container.RegisterSingleton <IModelUpdaterFactory, ModelUpdaterFactory>(); container.RegisterSingleton <IModelProviderFactory, ModelProviderFactory>(); container.RegisterSingleton <IDesigner, Designer>(); container.RegisterSingleton <IConductor, Conductor>(); container.RegisterSingleton <UIMain>(); container.RegisterSingleton <LogForm>(); container.RegisterSingleton <GraphForm>(); container.RegisterSingleton <JsonEditForm>(); container.RegisterSingleton <SettingsForm>(); container.RegisterSingleton <MainForm>(); }