L'injection de dépendances est un excellent pattern, qui peut vraiment aider à avoir du code propre, bien découplé et testable. Il existe de nombreuses bibliothèques d'injection de dépendances (DI), comme Autofac, Lamar (le successeur de StructureMap), ou encore Castle Windsor, mais ces dernières années j'utilise surtout celle fournie par Microsoft avec .NET Core : Microsoft.Extensions.DependencyInjection. C'est loin d'être la plus complète (en fait elle est même assez minimaliste), mais elle suffit généralement à mes besoins.