Несколько IMongoClient в. NET ядро - PullRequest
1 голос
/ 03 марта 2020

Я пытаюсь выяснить, как я могу эффективно работать с несколькими входами IMongoClient. net core (2). Чтобы быть более точным c, у меня есть пакет create, которому нужен IMongoClient, в то время как MongoClient «может» использоваться совместно со всем приложением, я пытаюсь найти способ, позволяющий ему указать другое.

Пока у меня есть это:

# In startup
services.AddSingleton<IMongoClient>(p => return new MongoClient(...));
services.AddMyPackage(...);

# Some service from my package
public Service(IMongoClient client)
{
...
}

Однако теперь это заставляет мое приложение «делиться» этим клиентом mon go.

Я хотел бы достичь чего-то вроде

# In startup

# app mongoclient
services.AddSingleton<IMongoClient>(p => return new MongoClient(...));

# package mongoclient (could be a different interface ...)
services.AddSingleton<IMongoClient>(p => return new MongoClient(...));

services.AddMyPackage(p => /*Specify the mongoclient to use here*/);

Сначала я попробовал следующее, в пакете создайте следующий интерфейс:

public interface IPackageMongoClient : IMongoClient
{}

И используйте IPackageMongoClient для внутреннего ввода.

Однако вы не можете сделайте следующее:

services.AddSingleton<IPackageMongoClient>(p => p.GetRequiredService<IMongoClient>());

Итак, подведем итог: я хотел бы иметь возможность указать, какой клиент использовать при «добавлении» пакета.

Должен быть какой-то трюк, которым я не являюсь видя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...