I'm working on a .Net Core Console Application with two classes(GenerateCsv,GenerateTxt) which inherit from the same interface (GenerateFile). They Both take IReadFile,IWriteFile interfaces as constructor parameters.
I want to use Dependency Injection to create the right class to generate a file and return a string value when finished.
static void Main()
{
string result="Processed Nothing";
Console.WriteLine("To Generate: \n");
Console.WriteLine("1) English CSV File Type 1 \n"+
"2) Englsih Txt File Type 2 \n" +
"3) To Exit Type 3 \n");
var userInput = Convert.ToInt32(Console.ReadLine());
if (userInput == 10)
Environment.Exit(0);
var service = BuildDependencies.Build();
Console.WriteLine("Started Generating");
Console.WriteLine("Working, please wait");
switch (userInput)
{
case 1:
result = service.GetService<IGenerateFile>().GenerateFile();
break;
case 2:
result = service.GetService<IGenerateFile>().GenerateFile();
break;
}
Console.WriteLine(result);
class BuildDependencies
using Microsoft.Extensions.DependencyInjection;
public static class BuildDependencies
{
public static ServiceProvider Build()
{
var services = new ServiceCollection()
.AddTransient<IReadFile, ReaFile>()
.AddTransient<IWriteFile, WriteFile>()
.AddTransient<IGenerateFile,GenerateCsv>()
.AddTransient<IGenerateFile,GenerateTxt>()
.BuildServiceProvider();
return services;
}