Details
-
New Feature
-
Resolution: Unresolved
-
Major - P3
-
None
-
None
Description
ASP.NET Core DI functions via IServiceCollection dependency registration.
While MongoClient can be registered with a general approach, like:
services.AddSingleton<IMongoClient>(_ => new MongoClient(connectionString)); |
There's a trend among prominent dotnet libraries in providing specialized extension methods for dependency registration, like:
services.AddMongoClient(connectionString);
|
This could be achieved by creating a separate nuget package (e.g. MongoDB.Extensions.DependencyInjection) with an extension implementation. The basic one is:
public static class ServiceCollectionExtensions |
{
|
public static IServiceCollection AddMongoClient(this IServiceCollection services, string connectionString) |
{
|
services.AddSingleton<IMongoClient>(_ => new MongoClient(connectionString)); |
return services; |
}
|
}
|
The major rational for this improvement is directing driver users towards using MongoClient as singleton by default, since not everyone notice the advised singleton lifetime scope in documentation, and per-instance usage sometimes leads to issues with the resource management.