< Summary

Information
Class: NexusLabs.Needlr.Injection.OrderedAssemblyProvider
Assembly: NexusLabs.Needlr.Injection
File(s): /home/runner/work/needlr/needlr/src/NexusLabs.Needlr.Injection/OrderedAssemblyProvider.cs
Line coverage
100%
Covered lines: 14
Uncovered lines: 0
Coverable lines: 14
Total lines: 34
Line coverage: 100%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
GetCandidateAssemblies()100%11100%

File(s)

/home/runner/work/needlr/needlr/src/NexusLabs.Needlr.Injection/OrderedAssemblyProvider.cs

#LineLine coverage
 1using System.Reflection;
 2
 3using NexusLabs.Needlr.Injection.AssemblyOrdering;
 4
 5namespace NexusLabs.Needlr.Injection;
 6
 7/// <summary>
 8/// An assembly provider that wraps another provider and applies ordering to the results.
 9/// </summary>
 10[DoNotAutoRegister]
 11internal sealed class OrderedAssemblyProvider : IAssemblyProvider
 12{
 13    private readonly IAssemblyProvider _inner;
 14    private readonly AssemblyOrderBuilder _orderBuilder;
 15    private readonly Lazy<IReadOnlyList<Assembly>> _lazyAssemblies;
 16
 2917    public OrderedAssemblyProvider(
 2918        IAssemblyProvider inner,
 2919        AssemblyOrderBuilder orderBuilder)
 20    {
 2921        ArgumentNullException.ThrowIfNull(inner);
 2922        ArgumentNullException.ThrowIfNull(orderBuilder);
 23
 2924        _inner = inner;
 2925        _orderBuilder = orderBuilder;
 2926        _lazyAssemblies = new Lazy<IReadOnlyList<Assembly>>(() =>
 2927        {
 2928            var assemblies = _inner.GetCandidateAssemblies();
 2929            return _orderBuilder.Sort(assemblies);
 2930        });
 2931    }
 32
 3533    public IReadOnlyList<Assembly> GetCandidateAssemblies() => _lazyAssemblies.Value;
 34}