Abstraction of GetEnvironmentVariable Improving testability and predictable behaviour.
The package introduces IEvironmentVariables which can be mocked during tests. It also produces a well defined EnvironmentVariableNotFoundException for better error handling.
The internal implementation of GetEnvironmentVariable() implements an hierarchical Variable lookup starting with in Process Variables, User Variables and later Machine Variables.
- Without Dependency Injection
When services are starting there is no dependency injection container available so the package provides a way to create a context that can be used during initialization:
using VinisLab.EnvironmentVariables;
public Program
{
public static async Task Main(string[] args)
{
var envVarContext = EnvironmentVariablesContext.CreateStaticContext();
var yourVar = envVarContext.GetEnvironmentVariable("YOUR_ENV_VAR_NAME");
}
}
- With Dependency Injection
The package provides an extension method to inject IEnvironmentVariables into your DI container
using VinisLab.EnvironmentVariables;
using VinisLab.EnvironmentVariables.DependencyInjection;
public Program
{
public static async Task Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);
builder.Services.InjectEnvironmentVariablesAbstraction();
var app = builder.Build();
}
}
public class MyExampleController(IEnvironmentVariables environmentVariables) : Controller
{
public void MyControllerEndpoint()
{
var yourVar = environmentVariables.GetEnvironmentVariable("YOUR_ENV_VAR_NAME");
}
}