You might be asking yourself at this point of time, how do I switch out different classes such as the ISettings
example? Inversion of Control (IoC) is a design pattern meant to complement the dependency injection and solve this problem. The basic principle is that many of the objects created throughout your application are managed and created by a single class. Instead of using the standard C# constructors for your ViewModel
or Model
classes, a service locator or factory class would manage them throughout the application.
There are many different implementations and styles of IoC, so let's implement a simple service locator class to use throughout the remainder of this book as follows:
public static class ServiceContainer { static readonly Dictionary<Type, Lazy<object>> services = new Dictionary<Type, Lazy<object>>(); public static void Register<T>(Func<T> function) { ...