< Summary

Information
Class: Orchestrator.Infrastructure.TypeResolver
Assembly: Orchestrator
File(s): /home/runner/work/KicktippAi/KicktippAi/src/Orchestrator/Infrastructure/TypeResolver.cs
Line coverage
88%
Covered lines: 8
Uncovered lines: 1
Coverable lines: 9
Total lines: 38
Line coverage: 88.8%
Branch coverage
66%
Covered branches: 4
Total branches: 6
Branch coverage: 66.6%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)50%22100%
Resolve(...)50%2266.67%
Dispose()100%22100%

File(s)

/home/runner/work/KicktippAi/KicktippAi/src/Orchestrator/Infrastructure/TypeResolver.cs

#LineLine coverage
 1using Spectre.Console.Cli;
 2
 3namespace Orchestrator.Infrastructure;
 4
 5/// <summary>
 6/// Resolves types from the DI container for Spectre.Console.Cli.
 7/// </summary>
 8/// <remarks>
 9/// Based on the canonical implementation from spectreconsole/examples:
 10/// <see href="https://github.com/spectreconsole/examples/blob/main/examples/Cli/Logging/Infrastructure/TypeResolver.cs"
 11/// </remarks>
 12public sealed class TypeResolver : ITypeResolver, IDisposable
 13{
 14    private readonly IServiceProvider _provider;
 15
 116    public TypeResolver(IServiceProvider provider)
 17    {
 118        _provider = provider ?? throw new ArgumentNullException(nameof(provider));
 119    }
 20
 21    public object? Resolve(Type? type)
 22    {
 123        if (type is null)
 24        {
 025            return null;
 26        }
 27
 128        return _provider.GetService(type);
 29    }
 30
 31    public void Dispose()
 32    {
 133        if (_provider is IDisposable disposable)
 34        {
 135            disposable.Dispose();
 36        }
 137    }
 38}