Fix GetReasoner.

This commit is contained in:
Haiping Chen 2024-12-04 02:48:55 +00:00
parent bfdccd7b9c
commit 9803eb4e49
2 changed files with 10 additions and 2 deletions

View file

@ -29,6 +29,8 @@ public class NaiveReasoner : IRoutingReasoner
private readonly IServiceProvider _services;
private readonly ILogger _logger;
public string Name => "Naive Reasoner";
public NaiveReasoner(IServiceProvider services, ILogger<NaiveReasoner> logger)
{
_services = services;

View file

@ -97,14 +97,20 @@ public partial class RoutingService
{
var rule = router.RoutingRules.FirstOrDefault(x => x.Type == RuleType.Reasoner);
if (rule == null)
{
_logger.LogError($"Can't find any reasoner");
return _services.GetServices<IRoutingReasoner>().First(x => x.Name == "Naive Reasoner");
}
var reasoner = _services.GetServices<IRoutingReasoner>().
FirstOrDefault(x => x.GetType().Name.EndsWith(rule.Field));
if (reasoner == null)
{
_logger.LogError($"Can't find specific planner named {rule.Field}");
_logger.LogError($"Can't find specific reasoner named {rule.Field}");
// Default use NaiveReasoner
return _services.GetRequiredService<NaiveReasoner>();
return _services.GetServices<IRoutingReasoner>().First(x => x.Name == "Naive Reasoner");
}
return reasoner;