diff --git a/src/coverlet.collector/DataCollection/CoverageWrapper.cs b/src/coverlet.collector/DataCollection/CoverageWrapper.cs index 2854ed1d5..0006da767 100644 --- a/src/coverlet.collector/DataCollection/CoverageWrapper.cs +++ b/src/coverlet.collector/DataCollection/CoverageWrapper.cs @@ -1,6 +1,7 @@ using Coverlet.Collector.Utilities.Interfaces; using Coverlet.Core; using Coverlet.Core.Abstracts; +using Coverlet.Core.Extensions; using Coverlet.Core.Logging; namespace Coverlet.Collector.DataCollection @@ -30,8 +31,8 @@ public Coverage CreateCoverage(CoverletSettings settings, ILogger coverletLogger settings.MergeWith, settings.UseSourceLink, coverletLogger, - (IInstrumentationHelper)DependencyInjection.Current.GetService(typeof(IInstrumentationHelper)), - (IFileSystem)DependencyInjection.Current.GetService(typeof(IFileSystem))); + DependencyInjection.Current.GetService(), + DependencyInjection.Current.GetService()); } /// diff --git a/src/coverlet.console/Program.cs b/src/coverlet.console/Program.cs index e306ab6c2..608786fcb 100644 --- a/src/coverlet.console/Program.cs +++ b/src/coverlet.console/Program.cs @@ -10,6 +10,7 @@ using Coverlet.Core; using Coverlet.Core.Abstracts; using Coverlet.Core.Enums; +using Coverlet.Core.Extensions; using Coverlet.Core.Reporters; using McMaster.Extensions.CommandLineUtils; @@ -59,7 +60,7 @@ static int Main(string[] args) // Adjust log level based on user input. logger.Level = verbosity.ParsedValue; } - var fileSystem = (IFileSystem)DependencyInjection.Current.GetService(typeof(IFileSystem)); + var fileSystem = DependencyInjection.Current.GetService(); Coverage coverage = new Coverage(module.Value, includeFilters.Values.ToArray(), includeDirectories.Values.ToArray(), @@ -71,7 +72,7 @@ static int Main(string[] args) mergeWith.Value(), useSourceLink.HasValue(), logger, - (IInstrumentationHelper)DependencyInjection.Current.GetService(typeof(IInstrumentationHelper)), + DependencyInjection.Current.GetService(), fileSystem); coverage.PrepareModules(); diff --git a/src/coverlet.core/Extensions/DependencyInjectionExtensions.cs b/src/coverlet.core/Extensions/DependencyInjectionExtensions.cs new file mode 100644 index 000000000..380885fa9 --- /dev/null +++ b/src/coverlet.core/Extensions/DependencyInjectionExtensions.cs @@ -0,0 +1,12 @@ +using System; + +namespace Coverlet.Core.Extensions +{ + public static class DependencyInjectionExtensions + { + public static T GetService(this IServiceProvider serviceProvider) + { + return (T)serviceProvider.GetService(typeof(T)); + } + } +} diff --git a/src/coverlet.msbuild.tasks/CoverageResultTask.cs b/src/coverlet.msbuild.tasks/CoverageResultTask.cs index f1a67ff7d..c37e59859 100644 --- a/src/coverlet.msbuild.tasks/CoverageResultTask.cs +++ b/src/coverlet.msbuild.tasks/CoverageResultTask.cs @@ -6,6 +6,7 @@ using Coverlet.Core; using Coverlet.Core.Abstracts; using Coverlet.Core.Enums; +using Coverlet.Core.Extensions; using Coverlet.Core.Reporters; using Microsoft.Build.Framework; using Microsoft.Build.Utilities; @@ -75,7 +76,7 @@ public override bool Execute() { Console.WriteLine("\nCalculating coverage result..."); - IFileSystem fileSystem = (IFileSystem)DependencyInjection.Current.GetService(typeof(IFileSystem)); + IFileSystem fileSystem = DependencyInjection.Current.GetService(); if (InstrumenterState is null || !fileSystem.Exists(InstrumenterState.ItemSpec)) { _logger.LogError("Result of instrumentation task not found"); @@ -85,7 +86,7 @@ public override bool Execute() Coverage coverage = null; using (Stream instrumenterStateStream = fileSystem.NewFileStream(InstrumenterState.ItemSpec, FileMode.Open)) { - coverage = new Coverage(CoveragePrepareResult.Deserialize(instrumenterStateStream), this._logger, (IInstrumentationHelper)DependencyInjection.Current.GetService(typeof(IInstrumentationHelper)), fileSystem); + coverage = new Coverage(CoveragePrepareResult.Deserialize(instrumenterStateStream), this._logger, DependencyInjection.Current.GetService(), fileSystem); } CoverageResult result = coverage.GetCoverageResult(); diff --git a/src/coverlet.msbuild.tasks/InstrumentationTask.cs b/src/coverlet.msbuild.tasks/InstrumentationTask.cs index 0c06ad915..ee15c41e9 100644 --- a/src/coverlet.msbuild.tasks/InstrumentationTask.cs +++ b/src/coverlet.msbuild.tasks/InstrumentationTask.cs @@ -3,6 +3,7 @@ using Coverlet.Core; using Coverlet.Core.Abstracts; +using Coverlet.Core.Extensions; using Microsoft.Build.Framework; using Microsoft.Build.Utilities; @@ -105,7 +106,7 @@ public override bool Execute() var excludeFilters = _exclude?.Split(','); var excludedSourceFiles = _excludeByFile?.Split(','); var excludeAttributes = _excludeByAttribute?.Split(','); - var fileSystem = (IFileSystem)DependencyInjection.Current.GetService(typeof(IFileSystem)); + var fileSystem = DependencyInjection.Current.GetService(); Coverage coverage = new Coverage(_path, includeFilters, @@ -118,7 +119,7 @@ public override bool Execute() _mergeWith, _useSourceLink, _logger, - (IInstrumentationHelper)DependencyInjection.Current.GetService(typeof(IInstrumentationHelper)), + DependencyInjection.Current.GetService(), fileSystem); CoveragePrepareResult prepareResult = coverage.PrepareModules(); diff --git a/test/coverlet.collector.tests/CoverletCoverageDataCollectorTests.cs b/test/coverlet.collector.tests/CoverletCoverageDataCollectorTests.cs index 07c56bd99..b5e82eead 100644 --- a/test/coverlet.collector.tests/CoverletCoverageDataCollectorTests.cs +++ b/test/coverlet.collector.tests/CoverletCoverageDataCollectorTests.cs @@ -15,6 +15,7 @@ using Coverlet.Collector.DataCollection; using Coverlet.Core.Reporters; using Coverlet.Core.Abstracts; +using Coverlet.Core.Extensions; namespace Coverlet.Collector.Tests { @@ -74,7 +75,7 @@ public void OnSessionStartShouldPrepareModulesForCoverage() null, _context); IDictionary sessionStartProperties = new Dictionary(); - Coverage coverage = new Coverage("abc.dll", null, null, null, null, null, true, true, "abc.json", true, It.IsAny(), (IInstrumentationHelper)DependencyInjection.Current.GetService(typeof(IInstrumentationHelper)), (IFileSystem)DependencyInjection.Current.GetService(typeof(IFileSystem))); + Coverage coverage = new Coverage("abc.dll", null, null, null, null, null, true, true, "abc.json", true, It.IsAny(), DependencyInjection.Current.GetService(), DependencyInjection.Current.GetService()); sessionStartProperties.Add("TestSources", new List { "abc.dll" }); _mockCoverageWrapper.Setup(x => x.CreateCoverage(It.IsAny(), It.IsAny())).Returns(coverage);