|
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.
|