Skip to content

Commit a2d139e

Browse files
author
Олександр Ляхевич
committed
Fix AddMinio registration lifetime
1 parent 2e976c1 commit a2d139e

File tree

2 files changed

+13
-9
lines changed

2 files changed

+13
-9
lines changed

Minio/MinioConfig.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
using System.Net;
2-
using Microsoft.Extensions.DependencyInjection;
32
using Minio.Credentials;
43
using Minio.Handlers;
54

65
namespace Minio;
76

87
public class MinioConfig
98
{
10-
internal ServiceProvider ServiceProvider { get; set; }
9+
internal IServiceProvider ServiceProvider { get; set; }
1110

1211
// Cache holding bucket to region mapping for buckets seen so far.
1312
public BucketRegionCache RegionCache { get; internal set; }

Minio/ServiceCollectionExtensions.cs

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,24 +41,29 @@ public static IServiceCollection AddMinio(
4141
if (services is null) throw new ArgumentNullException(nameof(services));
4242
if (configureClient == null) throw new ArgumentNullException(nameof(configureClient));
4343

44-
var minioClientFactory = new MinioClientFactory(configureClient);
45-
services.TryAddSingleton<IMinioClientFactory>(minioClientFactory);
44+
services.TryAddSingleton<IMinioClientFactory>(_ => new MinioClientFactory(configureClient));
4645

47-
var client = minioClientFactory.CreateClient();
48-
client.Config.ServiceProvider = services.BuildServiceProvider();
4946
switch (lifetime)
5047
{
5148
case ServiceLifetime.Singleton:
52-
services.TryAddSingleton(_ => client);
49+
services.TryAddSingleton(CreateClient);
5350
break;
5451
case ServiceLifetime.Scoped:
55-
services.TryAddScoped(_ => client);
52+
services.TryAddScoped(CreateClient);
5653
break;
5754
case ServiceLifetime.Transient:
58-
services.TryAddTransient(_ => client);
55+
services.TryAddTransient(CreateClient);
5956
break;
6057
}
6158

6259
return services;
60+
61+
static IMinioClient CreateClient(IServiceProvider serviceProvider)
62+
{
63+
var factory = serviceProvider.GetRequiredService<IMinioClientFactory>();
64+
var client = factory.CreateClient();
65+
client.Config.ServiceProvider = serviceProvider;
66+
return client;
67+
}
6368
}
6469
}

0 commit comments

Comments
 (0)