Я пытаюсь выяснить, как я могу эффективно работать с несколькими входами 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>());
Итак, подведем итог: я хотел бы иметь возможность указать, какой клиент использовать при «добавлении» пакета.
Должен быть какой-то трюк, которым я не являюсь видя