To help promote development of loosely coupled systems, dependency injection should be used along with separation of concerns and single responsibility principals.
The dependency injection provider built into .NET Core should be used.
For more information about .NET Core dependency injection, visit https://docs.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection
PREVIOUS: Logging
Solution Architecture Guidance
NEXT: Email