using System.Windows.Forms; using Autofac; using Autofac.Extras.AggregateService; using JiraTimeBotForm.JiraIntegration; using JiraTimeBotForm.Mercurial; using JiraTimeBotForm.TaskProcessors; using JiraTimeBotForm.TasksProcessors; using JiraTimeBotForm.TaskTime; using JiraTimeBotForm.UI; namespace JiraTimeBotForm.DI { public class Bootstrapper { private readonly ContainerBuilder _builder; public Bootstrapper() { _builder = new ContainerBuilder(); } public IContainer Build(TextBox logTextBox) { _builder.Register(f => new Logger(logTextBox)).As().AsSelf(); _builder.Register(f => new TrayMenu()).As().AsSelf(); _builder.Register(c => new CommitSkipper()).As(); _builder.Register(c => new MercurialLog(c.Resolve(), c.Resolve())).As().AsSelf(); _builder.Register(c => new TaskTimeDiscoverer(c.Resolve())).As().AsSelf(); _builder.RegisterType().AsSelf().As(); _builder.RegisterType().AsSelf().As(); _builder.RegisterAggregateService(); _builder.RegisterType().AsSelf().As(); _builder.RegisterType().AsSelf().AsImplementedInterfaces(); _builder.Register(c => new Job(c.Resolve(), c.Resolve(), c.Resolve())).AsSelf(); var container = _builder.Build(); return container; } } }