First, let's create a .NET Core console application project in Visual Studio. We will use this project to explore the inversion of control in the subsequent articles.
The easiest way to create a .NET Core console application is to open Visual Studio and create a C# web project using the Console App (.NET Core) template.
Click the Next button, and it will open the Configure your new project page.
Enter the name of the project IocDemo; you can also change the Location and Solution name. Click the Create button, and it will create a project.
Let's say we want to implement logging in our application. To make it simple we are going to target a text file for logging.
In the console application project, let's add a class file named FileLogger.cs
and add the following code.
using System;
using System.Collections.Generic;
using System.Text;
namespace IoCDemo
{
public class FileLogger
{
public void Log(string message)
{
Console.WriteLine("Inside Log method of FileLogger.");
LogToFile(message);
}
private void LogToFile(string message)
{
Console.WriteLine("Method: LogToFile, Text: {0}", message);
}
}
}
Let's add one more class file named CustomerService.cs
and add the following code.
using System;
using System.Collections.Generic;
using System.Text;
namespace IoCDemo
{
public class CustomerService
{
private readonly FileLogger _fileLogger = new FileLogger();
public void Log(string message)
{
_fileLogger.Log(message);
}
}
}
There is nothing wrong with the above implementation, but it has a limitation that we can only log the data to a text file. You can't in any way log data to other data sources or different log targets.