https://puresourcecode.com/dotnet/csharp/implementing-the-inversion-of-control-pattern-in-c/
Implementing the Inversion of Control Pattern in C#