private static async Task Run(string[] args) { try { // This wont work... // See https://github.com/aspnet/Configuration/issues/214 //var config = new ConfigurationBuilder(); //config.AddJsonFile("wiki.json"); var jsonConfig = new JsonConfigurationSource("wiki.json"); var config = new ConfigurationBuilder(jsonConfig); var builder = new ContainerBuilder(); var module = new ConfigurationModule(config.Build()); builder.RegisterModule(module); var loggerFactory = new LoggerFactory(); loggerFactory.AddConsole(LogLevel.Information); builder.RegisterInstance(loggerFactory).As<ILoggerFactory>().SingleInstance(); builder.RegisterType<GetDescriptionAction>().AsImplementedInterfaces().InstancePerDependency(); builder.RegisterType<AddValueToAlternativeKeysAction>().AsImplementedInterfaces().InstancePerDependency(); builder.Register(ctx => new CompositeDictEntryAction(ctx.Resolve<IEnumerable<IDictEntryAction>>())) .Keyed<IDictEntryAction>(DictEntryActionKey); builder.Register( ctx => new Wiki.Wiki(ctx.Resolve<HttpClient>(), ctx.ResolveOptionalKeyed<IDictEntryAction>(DictEntryActionKey), ctx.Resolve<ILoggerFactory>())) .AsImplementedInterfaces() .InstancePerDependency(); builder.RegisterInstance(new DictConfig { FilePath = Path.Combine("..", "..", "resources", "kindle_dict.html"), OpfFilePath = Path.Combine("..", "..", "resources"), TemplateFilePath = Path.Combine("..", "..", "resources", "knidle_dict_template.html"), EntryTemplateFilePath = Path.Combine("..", "..", "resources", "knidle_dict_entry_template.html"), OpfTemplateFilePath = Path.Combine("..", "..", "resources", "kindle_dict_template.opf"), }).SingleInstance(); builder.RegisterType<Dict>().AsImplementedInterfaces().SingleInstance(); var logger = loggerFactory.CreateLogger(typeof (Program).FullName); var container = builder.Build(); var wiki = container.Resolve<IWiki>(); logger.LogInformation("Getting wiki description..."); var wikiDesc = await wiki.GetDescriptionAsync().ConfigureAwait(false); logger.LogInformation("Getting entries..."); var entries = await wiki.GetEntriesAsync().ConfigureAwait(false); var dict = container.Resolve<IDict>(); logger.LogInformation("Saving dictionary..."); await dict.SaveAsync(wikiDesc, entries).ConfigureAwait(false); } catch (Exception ex) { Console.WriteLine(ex.Message); Console.WriteLine(ex.StackTrace); } }
private static void BuildByXml() { var config = new ConfigurationBuilder(); config.AddXmlFile("autofac.xml");//need Microsoft.Extensions.Configuration.Xml var module = new ConfigurationModule(config.Build()); var builder = new ContainerBuilder(); builder.RegisterModule(module); container = builder.Build(); }