Skip to content

Commit df0a7ac

Browse files
committed
Use central package management.
Use .NET 9 SDK. Remove .NET 6. Fixed code style issues.
1 parent 9cec87b commit df0a7ac

File tree

68 files changed

+337
-297
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+337
-297
lines changed

.github/workflows/build-test.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ jobs:
2929
uses: actions/setup-dotnet@v4
3030
with:
3131
dotnet-version: |
32-
6.0.x
3332
8.0.x
33+
9.0.x
3434
- name: Restore
3535
run: dotnet restore
3636
- name: Build
@@ -69,8 +69,8 @@ jobs:
6969
uses: actions/setup-dotnet@v4
7070
with:
7171
dotnet-version: |
72-
6.0.x
7372
8.0.x
73+
9.0.x
7474
- name: Download artifacts
7575
uses: actions/download-artifact@v4
7676
with:
@@ -92,8 +92,8 @@ jobs:
9292
uses: actions/setup-dotnet@v4
9393
with:
9494
dotnet-version: |
95-
6.0.x
9695
8.0.x
96+
9.0.x
9797
- name: Download artifacts
9898
uses: actions/download-artifact@v4
9999
with:

AppCoreNet.Extensions.sln

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
107107
LICENSE = LICENSE
108108
README.md = README.md
109109
stylecop.json = stylecop.json
110+
Directory.Packages.props = Directory.Packages.props
111+
NuGet.config = NuGet.config
110112
EndProjectSection
111113
EndProject
112114
Global
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
11
<Project>
22
<Import Project="$([MSBuild]::GetPathOfFileAbove('Directory.Build.props', '$(MSBuildThisFileDirectory)../'))" />
3+
4+
<PropertyGroup>
5+
<PackageTags>$(PackageTags);Microsoft.Extensions.DependencyInjection</PackageTags>
6+
</PropertyGroup>
37
</Project>

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public sealed class DefaultActivator : IActivator
1414
/// <summary>
1515
/// Gets the static instance of the <see cref="DefaultActivator"/>.
1616
/// </summary>
17-
public static DefaultActivator Instance { get; } = new ();
17+
public static DefaultActivator Instance { get; } = new();
1818

1919
/// <inheritdoc />
2020
public object? CreateInstance(Type instanceType, params object[] parameters)
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,17 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFrameworks>net8.0;net6.0;netstandard2.0;net462</TargetFrameworks>
4+
<TargetFrameworks>net8.0;netstandard2.0;net462</TargetFrameworks>
55
<RootNamespace>AppCoreNet.Extensions.DependencyInjection</RootNamespace>
66
<Description>Provides extensions to the Microsoft.Extensions.DependencyInjection framework.</Description>
77
</PropertyGroup>
88

99
<ItemGroup>
10-
<PackageReference Include="AppCoreNet.TypeHelpers.Sources" Version="0.5.0">
11-
<PrivateAssets>all</PrivateAssets>
12-
</PackageReference>
13-
</ItemGroup>
14-
15-
<ItemGroup Condition="'$(TargetFramework)'=='net8.0'">
16-
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.0" />
17-
</ItemGroup>
18-
19-
<ItemGroup Condition="'$(TargetFramework)'!='net8.0'">
20-
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="6.0.0" />
10+
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" />
2111
</ItemGroup>
2212

2313
<ItemGroup Condition="'$(TargetFramework)'=='net462'">
24-
<PackageReference Include="System.ValueTuple" Version="4.5.0" />
14+
<PackageReference Include="System.ValueTuple" />
2515
</ItemGroup>
2616

2717
</Project>

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

Lines changed: 2 additions & 70 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>
@@ -87,74 +87,6 @@ public FacilityBuilder AddExtensionsFrom(Action<IFacilityExtensionReflectionBuil
8787
extension.ConfigureServices(Services);
8888
}
8989

90-
return this;
91-
}
92-
}
93-
94-
/// <summary>
95-
/// Provides a builder for facilities.
96-
/// </summary>
97-
/// <typeparam name="T">The type of the facility.</typeparam>
98-
public sealed class FacilityBuilder<T> : FacilityBuilder
99-
where T : IFacility
100-
{
101-
internal FacilityBuilder(IServiceCollection services, IActivator activator)
102-
: base(services, activator, typeof(T))
103-
{
104-
}
105-
106-
/// <summary>
107-
/// Adds an extension to the facility.
108-
/// </summary>
109-
/// <remarks>
110-
/// The type <paramref name="extensionType"/> must implement <see cref="IFacilityExtension{T}"/> with the
111-
/// type of the facility.
112-
/// </remarks>
113-
/// <param name="extensionType">The type of the extension.</param>
114-
/// <returns>The <see cref="FacilityBuilder{T}"/> to allow chaining.</returns>
115-
/// <exception cref="ArgumentNullException">Argument <paramref name="extensionType"/> is null.</exception>
116-
/// <exception cref="ArgumentException">Argument <paramref name="extensionType"/> does not implement <see cref="IFacilityExtension{T}"/> with the type of the facility.</exception>
117-
public new FacilityBuilder<T> AddExtension(Type extensionType)
118-
{
119-
base.AddExtension(extensionType);
120-
return this;
121-
}
122-
123-
/// <summary>
124-
/// Adds an extension to the facility.
125-
/// </summary>
126-
/// <typeparam name="TExtension">The type of the extension.</typeparam>
127-
/// <returns>The <see cref="FacilityBuilder{T}"/> to allow chaining.</returns>
128-
public FacilityBuilder<T> AddExtension<TExtension>()
129-
where TExtension : class, IFacilityExtension<T>
130-
{
131-
IFacilityExtension<T> extension = Activator.CreateInstance<TExtension>() !;
132-
extension.ConfigureServices(Services);
133-
return this;
134-
}
135-
136-
/// <summary>
137-
/// Adds an extension to the facility.
138-
/// </summary>
139-
/// <param name="extension">The <see cref="IFacilityExtension{T}"/>.</param>
140-
/// <returns>The <see cref="FacilityBuilder{T}"/> to allow chaining.</returns>
141-
/// <exception cref="ArgumentNullException">Argument <paramref name="extension"/> is null.</exception>
142-
public FacilityBuilder<T> AddExtension(IFacilityExtension<T> extension)
143-
{
144-
Ensure.Arg.NotNull(extension);
145-
extension.ConfigureServices(Services);
146-
return this;
147-
}
148-
149-
/// <summary>
150-
/// Adds facility extensions using a <see cref="IFacilityExtensionReflectionBuilder"/> to the <see cref="IServiceCollection"/>.
151-
/// </summary>
152-
/// <param name="configure">The delegate used to configure the facility extension resolvers.</param>
153-
/// <returns>The <see cref="FacilityBuilder{T}"/>.</returns>
154-
/// <exception cref="ArgumentNullException">Argument <paramref name="configure"/> is null.</exception>
155-
public new FacilityBuilder<T> AddExtensionsFrom(Action<IFacilityExtensionReflectionBuilder> configure)
156-
{
157-
base.AddExtensionsFrom(configure);
15890
return this;
15991
}
16092
}
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
// Licensed under the MIT license.
2+
// Copyright (c) The AppCore .NET project.
3+
4+
using System;
5+
using System.Linq;
6+
using AppCoreNet.Diagnostics;
7+
using AppCoreNet.Extensions.DependencyInjection.Activator;
8+
using Microsoft.Extensions.DependencyInjection;
9+
10+
namespace AppCoreNet.Extensions.DependencyInjection.Facilities;
11+
12+
/// <summary>
13+
/// Provides a builder for facilities.
14+
/// </summary>
15+
/// <typeparam name="T">The type of the facility.</typeparam>
16+
public sealed class FacilityBuilder<T> : FacilityBuilder
17+
where T : IFacility
18+
{
19+
internal FacilityBuilder(IServiceCollection services, IActivator activator)
20+
: base(services, activator, typeof(T))
21+
{
22+
}
23+
24+
/// <summary>
25+
/// Adds an extension to the facility.
26+
/// </summary>
27+
/// <remarks>
28+
/// The type <paramref name="extensionType"/> must implement <see cref="IFacilityExtension{T}"/> with the
29+
/// type of the facility.
30+
/// </remarks>
31+
/// <param name="extensionType">The type of the extension.</param>
32+
/// <returns>The <see cref="FacilityBuilder{T}"/> to allow chaining.</returns>
33+
/// <exception cref="ArgumentNullException">Argument <paramref name="extensionType"/> is null.</exception>
34+
/// <exception cref="ArgumentException">Argument <paramref name="extensionType"/> does not implement <see cref="IFacilityExtension{T}"/> with the type of the facility.</exception>
35+
public new FacilityBuilder<T> AddExtension(Type extensionType)
36+
{
37+
base.AddExtension(extensionType);
38+
return this;
39+
}
40+
41+
/// <summary>
42+
/// Adds an extension to the facility.
43+
/// </summary>
44+
/// <typeparam name="TExtension">The type of the extension.</typeparam>
45+
/// <returns>The <see cref="FacilityBuilder{T}"/> to allow chaining.</returns>
46+
public FacilityBuilder<T> AddExtension<TExtension>()
47+
where TExtension : class, IFacilityExtension<T>
48+
{
49+
IFacilityExtension<T> extension = Activator.CreateInstance<TExtension>()!;
50+
extension.ConfigureServices(Services);
51+
return this;
52+
}
53+
54+
/// <summary>
55+
/// Adds an extension to the facility.
56+
/// </summary>
57+
/// <param name="extension">The <see cref="IFacilityExtension{T}"/>.</param>
58+
/// <returns>The <see cref="FacilityBuilder{T}"/> to allow chaining.</returns>
59+
/// <exception cref="ArgumentNullException">Argument <paramref name="extension"/> is null.</exception>
60+
public FacilityBuilder<T> AddExtension(IFacilityExtension<T> extension)
61+
{
62+
Ensure.Arg.NotNull(extension);
63+
extension.ConfigureServices(Services);
64+
return this;
65+
}
66+
67+
/// <summary>
68+
/// Adds facility extensions using a <see cref="IFacilityExtensionReflectionBuilder"/> to the <see cref="IServiceCollection"/>.
69+
/// </summary>
70+
/// <param name="configure">The delegate used to configure the facility extension resolvers.</param>
71+
/// <returns>The <see cref="FacilityBuilder{T}"/>.</returns>
72+
/// <exception cref="ArgumentNullException">Argument <paramref name="configure"/> is null.</exception>
73+
public new FacilityBuilder<T> AddExtensionsFrom(Action<IFacilityExtensionReflectionBuilder> configure)
74+
{
75+
base.AddExtensionsFrom(configure);
76+
return this;
77+
}
78+
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ namespace AppCoreNet.Extensions.DependencyInjection.Facilities;
1212
internal sealed class FacilityExtensionReflectionBuilder : IFacilityExtensionReflectionBuilder
1313
{
1414
private readonly IActivator _activator;
15-
private readonly List<IFacilityExtensionResolver> _resolvers = new ();
15+
private readonly List<IFacilityExtensionResolver> _resolvers = new();
1616

1717
public FacilityExtensionReflectionBuilder(IActivator activator)
1818
{
@@ -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: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ namespace AppCoreNet.Extensions.DependencyInjection.Facilities;
1313
internal sealed class FacilityReflectionBuilder : IFacilityReflectionBuilder
1414
{
1515
private readonly IActivator _activator;
16-
private readonly List<IFacilityResolver> _resolvers = new ();
16+
private readonly List<IFacilityResolver> _resolvers = new();
1717
private Action<IFacilityExtensionReflectionBuilder>? _extensionsConfig;
1818

1919
public FacilityReflectionBuilder(IActivator activator)
@@ -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
}
@@ -43,7 +43,8 @@ public IFacilityReflectionBuilder AddExtensionsFrom(Action<IFacilityExtensionRef
4343
return this;
4444
}
4545

46-
public IReadOnlyCollection<(IFacility, IReadOnlyCollection<IFacilityExtension<IFacility>>)> Resolve()
46+
public IReadOnlyCollection<(IFacility Facility, IReadOnlyCollection<IFacilityExtension<IFacility>>
47+
FacilityExtensions)> Resolve()
4748
{
4849
List<IFacility> facilities =
4950
_resolvers.SelectMany(s => s.Resolve())
@@ -60,15 +61,16 @@ public IFacilityReflectionBuilder AddExtensionsFrom(Action<IFacilityExtensionRef
6061
ReadOnlyCollection<IFacilityExtension<IFacility>> emptyFacilityExtensions =
6162
new List<IFacilityExtension<IFacility>>().AsReadOnly();
6263

63-
List<(IFacility, IReadOnlyCollection<IFacilityExtension<IFacility>>)> result = new ();
64+
List<(IFacility Facility, IReadOnlyCollection<IFacilityExtension<IFacility>> FacilityExtensions)> result =
65+
new();
6466

6567
foreach (IFacility facility in facilities)
6668
{
6769
IReadOnlyCollection<IFacilityExtension<IFacility>> facilityExtensions =
6870
extensionReflectionBuilder?.Resolve(facility.GetType())
6971
?? emptyFacilityExtensions;
7072

71-
result.Add((facility, facilityExtensions));
73+
result.Add((Facility: facility, FacilityExtensions: facilityExtensions));
7274
}
7375

7476
return result;

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

Lines changed: 5 additions & 6 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);
@@ -100,13 +100,12 @@ public static IServiceCollection AddFacilitiesFrom(
100100

101101
configure(builder);
102102

103-
foreach ((IFacility facility,
104-
IReadOnlyCollection<IFacilityExtension<IFacility>> facilityExtensions) in builder
103+
foreach ((IFacility Facility, IReadOnlyCollection<IFacilityExtension<IFacility>> FacilityExtensions) item in builder
105104
.Resolve())
106105
{
107-
facility.ConfigureServices(services);
106+
item.Facility.ConfigureServices(services);
108107

109-
foreach (IFacilityExtension<IFacility> facilityExtension in facilityExtensions)
108+
foreach (IFacilityExtension<IFacility> facilityExtension in item.FacilityExtensions)
110109
{
111110
facilityExtension.ConfigureServices(services);
112111
}

0 commit comments

Comments
 (0)