My code get all types, which use interface IHealthCheckable.
IHealthCheckable have 1 method, I want to call it for each type.
It is extension method in static class, so I can’t inject serviceProvider here.
But I need it – how can I get it?
public static void ConfigureUniversalHealthCheck(this IServiceCollection services)
{
// Get all types, which use interface IHealthCheckable
var healthCheckableType = typeof(IHealthCheckable);
var types = AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(s => s.GetTypes())
.Where(p => healthCheckableType.IsAssignableFrom(p) && p.Name != healthCheckableType.Name);
foreach (var type in types)
{
var healthChecksBuilder = services.AddHealthChecks().AddCheck(type.Name, () =>
{
var method = typeof(IHealthCheckable).GetMethod(nameof(IHealthCheckable.ValidateHealth));
// I need serviceProvider here
var instance = ActivatorUtilities.CreateInstance(serviceProvider, type);
// ..
});
}
}