< Summary

Information
Class: MyNet.UI.Theming.ServiceCollectionExtensions
Assembly: MyNet.UI
File(s): https://raw.githubusercontent.com/sandre58/MyNet/85372080fe102cd9ee155ceab49ae000e7f66103/src/MyNet.UI/Theming/Extensions/ServiceCollectionExtensions.cs
Tag: 323_28699572109
Line coverage
100%
Covered lines: 11
Uncovered lines: 0
Coverable lines: 11
Total lines: 56
Line coverage: 100%
Branch coverage
75%
Covered branches: 3
Total branches: 4
Branch coverage: 75%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
UseThemeManager(...)100%11100%
UseThemeManagerIfAvailable(...)75%44100%

File(s)

https://raw.githubusercontent.com/sandre58/MyNet/85372080fe102cd9ee155ceab49ae000e7f66103/src/MyNet.UI/Theming/Extensions/ServiceCollectionExtensions.cs

#LineLine coverage
 1// -----------------------------------------------------------------------
 2// <copyright file="ServiceCollectionExtensions.cs" company="Stéphane ANDRE">
 3// Copyright (c) Stéphane ANDRE. All rights reserved.
 4// </copyright>
 5// -----------------------------------------------------------------------
 6
 7using System;
 8using Microsoft.Extensions.DependencyInjection;
 9
 10#pragma warning disable IDE0130
 11namespace MyNet.UI.Theming;
 12#pragma warning restore IDE0130
 13
 14/// <summary>
 15/// Dependency injection helpers for theming.
 16/// </summary>
 17public static class ServiceCollectionExtensions
 18{
 19    extension(IServiceProvider serviceProvider)
 20    {
 21        /// <summary>
 22        /// Configures the <see cref="ThemeManager"/> static bridge from the built service provider.
 23        /// Call after registering <see cref="IThemeService"/> and <see cref="IThemeBaseRegistry"/> in the host (WPF or 
 24        /// </summary>
 25        /// <returns>The same service provider for chaining.</returns>
 26        /// <exception cref="InvalidOperationException">Thrown when required theming services are not registered.</excep
 27        public IServiceProvider UseThemeManager()
 28        {
 329            ArgumentNullException.ThrowIfNull(serviceProvider);
 30
 331            ThemeManager.Configure(
 332                serviceProvider.GetRequiredService<IThemeService>(),
 333                serviceProvider.GetRequiredService<IThemeBaseRegistry>());
 34
 335            return serviceProvider;
 36        }
 37
 38        /// <summary>
 39        /// Configures <see cref="ThemeManager"/> when both <see cref="IThemeService"/> and <see cref="IThemeBaseRegistr
 40        /// Used by <see cref="MyNet.UI.ServiceCollectionExtensions.UseUi"/>.
 41        /// </summary>
 42        /// <returns>The same service provider for chaining.</returns>
 43        public IServiceProvider UseThemeManagerIfAvailable()
 44        {
 645            ArgumentNullException.ThrowIfNull(serviceProvider);
 46
 647            var themeService = serviceProvider.GetService<IThemeService>();
 648            var themeRegistry = serviceProvider.GetService<IThemeBaseRegistry>();
 649            if (themeService is not null && themeRegistry is not null)
 350                ThemeManager.Configure(themeService, themeRegistry);
 51
 652            return serviceProvider;
 53        }
 54    }
 55}
 56