Update zur Unterstützung mehrerer Frameworks (.NET 7, 8 und 9)

This commit is contained in:
tekh 2025-08-18 17:52:32 +02:00
parent 6433e0b39b
commit 33df010573
7 changed files with 35 additions and 68 deletions

View File

@ -1,31 +0,0 @@
using MediatR;
using Microsoft.Extensions.DependencyInjection;
namespace Leanetec.EConnect.Client;
/// <summary>
/// Provides a lazily initialized <see cref="IServiceProvider"/> for accessing the EConnect client services,
/// including an <see cref="IMediator"/> instance for sending and publishing messages.
/// </summary>
public static class Client
{
/// <summary>
/// Lazily initializes the <see cref="IServiceProvider"/> that registers and builds the EConnect client services.
/// </summary>
private static readonly Lazy<IServiceProvider> _serviceProvider = new(() =>
{
var services = new ServiceCollection();
services.AddClientServices();
return services.BuildServiceProvider();
});
/// <summary>
/// Gets the initialized <see cref="IServiceProvider"/> that provides access to registered EConnect client services.
/// </summary>
public static IServiceProvider Provider => _serviceProvider.Value;
/// <summary>
/// Gets the <see cref="IMediator"/> instance used for sending commands, queries, and publishing events within the EConnect client.
/// </summary>
public static IMediator Mediator => Provider.GetRequiredService<IMediator>();
}

View File

@ -6,8 +6,5 @@ public interface IEConnectClient<TError> where TError : class
{
public Task<Response<TData, TError>> GetAsync<TData>(string? route = null, object? queryParams = null, CancellationToken cancel = default) where TData : class;
public Task<Response<IAsyncEnumerable<TData?>, TError>> GetListAsAsyncEnumerable<TData>(string? route = null, object? queryParams = null, CancellationToken cancel = default)
where TData : class;
Task<Response<TError>> PostAsync(Stream stream, string fileName, string? route = null, object? queryParams = null, CancellationToken cancel = default);
}

View File

@ -1,17 +1,28 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<TargetFrameworks>net7.0;net8.0;net9.0</TargetFrameworks>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="MediatR" Version="13.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="8.0.0" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net7.0'">
<PackageReference Include="MediatR" Version="12.5.0" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net8.0'">
<PackageReference Include="MediatR" Version="13.0.0" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net9.0'">
<PackageReference Include="MediatR" Version="13.0.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Leanetec.EConnect.Domain\Leanetec.EConnect.Domain.csproj" />
</ItemGroup>

View File

@ -65,34 +65,6 @@ public class EConnectClient<TError> : IEConnectClient<TError> where TError : cl
};
}
public async Task<Response<IAsyncEnumerable<TData?>, TError>> GetListAsAsyncEnumerable<TData>(string? route = null, object? queryParams = null, CancellationToken cancel = default)
where TData : class
{
route = AddQueryString(route, queryParams);
var res = await Http.GetAsync(route, cancel);
_logger?.LogCurl(Http, HttpMethod.Get, route);
return res.IsSuccessStatusCode
? new()
{
Ok = true,
StatusCode = res.StatusCode,
Data = (res.Content.Headers.ContentLength > 0)
? res.Content.ReadFromJsonAsAsyncEnumerable<TData>(_options.JsonSerializerOptions, cancel)
: null
}
: new()
{
Ok = false,
StatusCode = res.StatusCode,
Error = (res.Content.Headers.ContentLength > 0)
? await res.Content.ReadFromJsonAsync<TError>(_options.JsonSerializerOptions, cancel)
: null
};
}
public async Task<Response<TError>> PostAsync(Stream stream, string fileName, string? route = null, object? queryParams = null, CancellationToken cancel = default)
{
route = AddQueryString(route, queryParams);

View File

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<TargetFrameworks>net7.0;net8.0;net9.0</TargetFrameworks>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
@ -9,10 +9,21 @@
<ItemGroup>
<PackageReference Include="HttpClientToCurl" Version="2.0.6" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.3.0" />
<PackageReference Include="Microsoft.AspNetCore.WebUtilities" Version="8.0.19" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.2" />
<PackageReference Include="Microsoft.Extensions.Http" Version="8.0.1" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net7.0'">
<PackageReference Include="Microsoft.AspNetCore.WebUtilities" Version="2.3.0" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net8.0'">
<PackageReference Include="Microsoft.AspNetCore.WebUtilities" Version="8.0.19" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net9.0'">
<PackageReference Include="Microsoft.AspNetCore.WebUtilities" Version="8.0.19" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Leanetec.EConnect.Client\Leanetec.EConnect.Client.csproj" />

View File

@ -1,9 +1,16 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<TargetFrameworks>net7.0;net8.0;net9.0</TargetFrameworks>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<PackageId>Leanetec.EConnect.Proxy</PackageId>
<Version>1.0.0</Version>
<Company>Digital Data GmbH</Company>
<Product>Leanetec.EConnect.Proxy</Product>
<Title>Leanetec.EConnect.Proxy</Title>
<AssemblyVersion>1.0.0</AssemblyVersion>
<FileVersion>1.0.0</FileVersion>
</PropertyGroup>
<ItemGroup>

View File

@ -1,8 +1,8 @@
using Leanetec.EConnect.Client;
using Leanetec.EConnect.Infrastructure;
using Leanetec.EConnect.Proxy.Middleware;
using NLog;
using NLog.Web;
using WorkFlow.API.Middleware;
var logger = LogManager.Setup().LoadConfigurationFromAppSettings().GetCurrentClassLogger();
logger.Info("Logging initialized!");