Scaling factories with reflection and LINQ
Using a parameterized factory class can quickly become a spaghetti nightmare of monstrous switch
statements and unmanageable code if items are being added or updated at a fast pace. Luckily, C# has a System.Reflection
namespace that can tell you about all the classes, interfaces, and value types your project has by looking through the project’s assembly.
In addition to reflection, we’ll be using the LINQ API, which stands for Language Integrated Query. Don’t worry if you’ve never used LINQ before – think of it as a way to filter, sort, or otherwise manipulate a set of data. For example, if we had a list of player names but only wanted to see players with a specific first initial, LINQ would get us there fast!
You can check out more on the LINQ API at https://docs.microsoft.com/dotnet/csharp/programming-guide/concepts/linq.
Reflection lets you create type instances at runtime, just...