Skip to content

Commit 009de1d

Browse files
committed
Fixed nullable warnings.
1 parent 852bc03 commit 009de1d

13 files changed

Lines changed: 60 additions & 42 deletions

File tree

DependencyInjection/src/AppCoreNet.Extensions.DependencyInjection.Abstractions/Activator/ActivatorExtensions.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@ public static class ActivatorExtensions
1919
/// <param name="parameters">Constructor arguments not provided by the <see cref="IServiceProvider"/>.</param>
2020
/// <returns>An activated object of type <typeparamref name="T"/>.</returns>
2121
/// <exception cref="ArgumentNullException">Argument <paramref name="activator"/> is null.</exception>
22-
public static T CreateInstance<T>(this IActivator activator, params object[] parameters)
22+
public static T? CreateInstance<T>(this IActivator activator, params object[] parameters)
2323
{
2424
Ensure.Arg.NotNull(activator);
25-
return (T)activator.CreateInstance(typeof(T), parameters);
25+
return (T?)activator.CreateInstance(typeof(T), parameters);
2626
}
2727
}

DependencyInjection/src/AppCoreNet.Extensions.DependencyInjection.Abstractions/Activator/DefaultActivator.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,11 @@ public sealed class DefaultActivator : IActivator
1717
public static DefaultActivator Instance { get; } = new ();
1818

1919
/// <inheritdoc />
20-
public object CreateInstance(Type instanceType, params object[] parameters)
20+
public object? CreateInstance(Type instanceType, params object[] parameters)
2121
{
2222
Ensure.Arg.NotNull(instanceType);
23-
return System.Activator.CreateInstance(instanceType, parameters ?? Array.Empty<object>());
23+
Ensure.Arg.NotNull(parameters);
24+
25+
return System.Activator.CreateInstance(instanceType, parameters);
2426
}
2527
}

DependencyInjection/src/AppCoreNet.Extensions.DependencyInjection.Abstractions/Activator/IActivator.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@ public interface IActivator
1616
/// <param name="instanceType">The type to activate.</param>
1717
/// <param name="parameters">Constructor arguments not provided by the <see cref="IServiceProvider"/>.</param>
1818
/// <returns>An activated object of type <paramref name="instanceType"/>.</returns>
19-
/// <exception cref="ArgumentNullException">Argument <paramref name="instanceType"/> is null.</exception>
20-
object CreateInstance(Type instanceType, params object[] parameters);
19+
/// <exception cref="ArgumentNullException">Argument <paramref name="instanceType"/> or <paramref name="parameters"/> is null.</exception>
20+
object? CreateInstance(Type instanceType, params object[] parameters);
2121
}

DependencyInjection/src/AppCoreNet.Extensions.DependencyInjection.Abstractions/Activator/ServiceProviderActivator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public ServiceProviderActivator(IServiceProvider serviceProvider)
2626
}
2727

2828
/// <inheritdoc />
29-
public object CreateInstance(Type instanceType, params object[] parameters)
29+
public object? CreateInstance(Type instanceType, params object[] parameters)
3030
{
3131
return ActivatorUtilities.CreateInstance(_serviceProvider, instanceType, parameters);
3232
}

DependencyInjection/src/AppCoreNet.Extensions.DependencyInjection.Abstractions/Facilities/FacilityBuilder.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ private IFacilityExtension<IFacility> CreateExtension(Type extensionType)
4343
.GenericTypeArguments[0];
4444

4545
Type extensionWrapperType = typeof(FacilityExtensionWrapper<>).MakeGenericType(contractType);
46-
object extension = Activator.CreateInstance(extensionType);
46+
object extension = Activator.CreateInstance(extensionType) !;
4747

48-
return (IFacilityExtension<IFacility>)System.Activator.CreateInstance(extensionWrapperType, extension);
48+
return (IFacilityExtension<IFacility>)System.Activator.CreateInstance(extensionWrapperType, extension) !;
4949
}
5050

5151
/// <summary>
@@ -128,7 +128,7 @@ internal FacilityBuilder(IServiceCollection services, IActivator activator)
128128
public FacilityBuilder<T> AddExtension<TExtension>()
129129
where TExtension : class, IFacilityExtension<T>
130130
{
131-
IFacilityExtension<T> extension = Activator.CreateInstance<TExtension>();
131+
IFacilityExtension<T> extension = Activator.CreateInstance<TExtension>() !;
132132
extension.ConfigureServices(Services);
133133
return this;
134134
}

DependencyInjection/src/AppCoreNet.Extensions.DependencyInjection.Abstractions/Facilities/FacilityExtensionReflectionBuilder.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public IFacilityExtensionReflectionBuilder AddResolver(IFacilityExtensionResolve
2929
public IFacilityExtensionReflectionBuilder AddResolver<T>(Action<T>? configure = null)
3030
where T : IFacilityExtensionResolver
3131
{
32-
var resolver = _activator.CreateInstance<T>();
32+
var resolver = _activator.CreateInstance<T>() !;
3333
configure?.Invoke(resolver);
3434
return AddResolver(resolver);
3535
}

DependencyInjection/src/AppCoreNet.Extensions.DependencyInjection.Abstractions/Facilities/FacilityReflectionBuilder.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public IFacilityReflectionBuilder AddResolver(IFacilityResolver resolver)
3131
public IFacilityReflectionBuilder AddResolver<T>(Action<T>? configure = null)
3232
where T : IFacilityResolver
3333
{
34-
var resolver = _activator.CreateInstance<T>();
34+
var resolver = _activator.CreateInstance<T>() !;
3535
configure?.Invoke(resolver);
3636
return AddResolver(resolver);
3737
}

DependencyInjection/src/AppCoreNet.Extensions.DependencyInjection.Abstractions/FacilityServiceCollectionExtensions.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public static IServiceCollection AddFacility<T>(this IServiceCollection services
3434
var serviceProvider = new ServiceCollectionServiceProvider(services);
3535
var activator = serviceProvider.GetRequiredService<IActivator>();
3636

37-
var facility = activator.CreateInstance<T>();
37+
var facility = activator.CreateInstance<T>() !;
3838
if (configure != null)
3939
{
4040
var builder = new FacilityBuilder<T>(services, activator);
@@ -68,7 +68,7 @@ public static IServiceCollection AddFacility(
6868
var serviceProvider = new ServiceCollectionServiceProvider(services);
6969
var activator = serviceProvider.GetRequiredService<IActivator>();
7070

71-
var facility = (IFacility)activator.CreateInstance(facilityType);
71+
var facility = (IFacility)activator.CreateInstance(facilityType) !;
7272
if (configure != null)
7373
{
7474
var builder = new FacilityBuilder(services, activator, facilityType);
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
// Licensed under the MIT license.
2+
// Copyright (c) The AppCore .NET project.
3+
4+
#if NET6_0_OR_GREATER
5+
6+
using System;
7+
using System.Collections.Generic;
8+
using System.Linq;
9+
using Microsoft.Extensions.DependencyInjection;
10+
11+
namespace AppCoreNet.Extensions.DependencyInjection;
12+
13+
/// <content>
14+
/// .NET 6.0+ implementation of <see cref="IServiceProvider"/>.
15+
/// </content>
16+
internal sealed partial class ServiceCollectionServiceProvider : IServiceProviderIsService
17+
{
18+
public bool IsService(Type serviceType)
19+
{
20+
if (serviceType == typeof(IServiceProvider) || serviceType == typeof(IServiceProviderIsService))
21+
return true;
22+
23+
if (_additionalServices.TryGetValue(serviceType, out object? _))
24+
return true;
25+
26+
if (serviceType.IsGenericType && serviceType.GetGenericTypeDefinition() == typeof(IEnumerable<>))
27+
return true;
28+
29+
return _services.Any(
30+
sd => sd.ServiceType == serviceType
31+
|| (serviceType.IsGenericType
32+
&& sd.ServiceType == serviceType.GetGenericTypeDefinition()));
33+
}
34+
}
35+
36+
#endif

DependencyInjection/src/AppCoreNet.Extensions.DependencyInjection.Abstractions/ServiceCollectionServiceProvider.cs

Lines changed: 4 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@
99

1010
namespace AppCoreNet.Extensions.DependencyInjection;
1111

12-
internal sealed class ServiceCollectionServiceProvider : IServiceProvider
13-
#if NET6_0_OR_GREATER
14-
, IServiceProviderIsService
15-
#endif
12+
/// <summary>
13+
/// Internal service provider which resolves services from an <see cref="IServiceCollection"/>.
14+
/// </summary>
15+
internal sealed partial class ServiceCollectionServiceProvider : IServiceProvider
1616
{
1717
private readonly IServiceCollection _services;
1818
private readonly Dictionary<Type, object> _additionalServices = new ();
@@ -82,21 +82,4 @@ object ServiceFactory(ServiceDescriptor serviceDescriptor)
8282

8383
return instance;
8484
}
85-
86-
public bool IsService(Type serviceType)
87-
{
88-
if (serviceType == typeof(IServiceProvider) || serviceType == typeof(IServiceProviderIsService))
89-
return true;
90-
91-
if (_additionalServices.TryGetValue(serviceType, out object? _))
92-
return true;
93-
94-
if (serviceType.IsGenericType && serviceType.GetGenericTypeDefinition() == typeof(IEnumerable<>))
95-
return true;
96-
97-
return _services.Any(
98-
sd => sd.ServiceType == serviceType
99-
|| (serviceType.IsGenericType
100-
&& sd.ServiceType == serviceType.GetGenericTypeDefinition()));
101-
}
10285
}

0 commit comments

Comments
 (0)