//Methods #region Main public static async Task Main(String[] args) { try { Program.config = new ConfigurationBuilder() .SetBasePath(Directory.GetParent(AppContext.BaseDirectory).FullName) .AddJsonFile("appsettings.json", false) .Build() .GetSection("Settings") .Get <Settings>(); using var serviceProvider = new ServiceCollection() .AddSingleton <IDocumentMetaClient, CosmosClient>((provider) => CosmosClient.CreateAsync(config.Cosmos.EndpointUri, config.Cosmos.PrimaryKey, config.Cosmos.DatabaseId, config.Cosmos.ContainerId).Result) .AddSingleton <IDocumentBlobClient, BlobClient>((provider) => BlobClient.Create(config.Blob.ConnectionString, config.Blob.ContainerName)) .AddSingleton <IStoreClient, StoreClient>((provider) => new StoreClient(provider.GetService <IDocumentMetaClient>(), provider.GetService <IDocumentBlobClient>())) .AddSingleton <IFileReader, PdfFileReader.PdfFileReader>() .AddSingleton <IFileReader, TxtFileReader.TxtFileReader>() .BuildServiceProvider(); var storeClient = serviceProvider.GetService <IStoreClient>(); var pdfFileReader = serviceProvider.GetServices <IFileReader>(); Program.handler = new DocumentHandler(storeClient, pdfFileReader.ToArray()); var menu = new List <MenuItem>() { new MenuItem('a', "Write file", Program.WriteFiles), new MenuItem('b', "Read files", Program.ReadFiles) }; ConsoleMenu.Run(args, menu, new List <ArgumentOperation>()); } catch (Exception ex) { System.Console.Write(ex.Message); } }