diff --git a/Src/Metrics/Core/HealthCheck.cs b/Src/Metrics/Core/HealthCheck.cs index d1a30e0a..3ea36dbd 100644 --- a/Src/Metrics/Core/HealthCheck.cs +++ b/Src/Metrics/Core/HealthCheck.cs @@ -16,7 +16,7 @@ public Result(string name, HealthCheckResult check) } } - private readonly Func check; + internal Func CheckFunc { get; set; } protected HealthCheck(string name) : this(name, () => { }) @@ -33,14 +33,14 @@ public HealthCheck(string name, Func check) public HealthCheck(string name, Func check) { this.Name = name; - this.check = check; + this.CheckFunc = check; } public string Name { get; } protected virtual HealthCheckResult Check() { - return this.check(); + return this.CheckFunc(); } public Result Execute() diff --git a/Src/Metrics/HealthChecks.cs b/Src/Metrics/HealthChecks.cs index cfaecf87..d8abb6f4 100644 --- a/Src/Metrics/HealthChecks.cs +++ b/Src/Metrics/HealthChecks.cs @@ -79,7 +79,19 @@ public static void RegisterHealthCheck(string name, Func chec /// Custom health check to register. public static void RegisterHealthCheck(HealthCheck healthCheck) { - checks.TryAdd(healthCheck.Name, healthCheck); + bool added = checks.TryAdd(healthCheck.Name, healthCheck); + if (!added) + { + HealthCheck existingHealthCheck; + if (checks.TryGetValue(healthCheck.Name, out existingHealthCheck)) + existingHealthCheck.CheckFunc = healthCheck.CheckFunc; + } + } + + public static void UnregisterHealthCheck(string healthCheckName) + { + HealthCheck healthCheck; + checks.TryRemove(healthCheckName, out healthCheck); } ///