Add support for IServiceProviderIsService (#54047)
authorDavid Fowler <davidfowl@gmail.com>
Fri, 11 Jun 2021 22:11:50 +0000 (15:11 -0700)
committerGitHub <noreply@github.com>
Fri, 11 Jun 2021 22:11:50 +0000 (15:11 -0700)
commitc14ac488cc5f7d2ad71e7f81d6a05a1da8c76237
treeba16dd9272329fabc6610b677e795036edd2b069
parent67b93b2b77f9fd77d96dbac96b61ff89f2fda9fd
Add support for IServiceProviderIsService (#54047)

* Add support for IServiceProviderIsService
- This optional service lets consumers query to see if a service is resolvable without side effects (not having to explicitly resolve the service).
- Added new spec tests to verify the baseline behavior based on IServiceCollection features.
- Handle built in services as part of IsServce
- Special case built in services as part of the IsService check
- Make the tests part of the core DI tests and enable skipping via a property

Co-authored-by: Travis Illig <tillig@paraesthesia.com>
13 files changed:
src/libraries/Microsoft.Extensions.DependencyInjection.Abstractions/ref/Microsoft.Extensions.DependencyInjection.Abstractions.cs
src/libraries/Microsoft.Extensions.DependencyInjection.Abstractions/src/IServiceProviderIsService.cs [new file with mode: 0644]
src/libraries/Microsoft.Extensions.DependencyInjection.Specification.Tests/src/ServiceProviderIsServiceSpecificationTests.cs [new file with mode: 0644]
src/libraries/Microsoft.Extensions.DependencyInjection/src/ServiceLookup/CallSiteFactory.cs
src/libraries/Microsoft.Extensions.DependencyInjection/src/ServiceProvider.cs
src/libraries/Microsoft.Extensions.DependencyInjection/tests/DI.External.Tests/Autofac.cs
src/libraries/Microsoft.Extensions.DependencyInjection/tests/DI.External.Tests/DryIoc.cs
src/libraries/Microsoft.Extensions.DependencyInjection/tests/DI.External.Tests/Grace.cs
src/libraries/Microsoft.Extensions.DependencyInjection/tests/DI.External.Tests/Lamar.cs
src/libraries/Microsoft.Extensions.DependencyInjection/tests/DI.External.Tests/LightInject.cs
src/libraries/Microsoft.Extensions.DependencyInjection/tests/DI.External.Tests/StashBox.cs
src/libraries/Microsoft.Extensions.DependencyInjection/tests/DI.External.Tests/StructureMap.cs
src/libraries/Microsoft.Extensions.DependencyInjection/tests/DI.External.Tests/Unity.cs