Повышение вашего apiKey
значения конфигурации для объекта параметров:
public sealed class MyServiceConfiguration
{
public readonly string ApiKey;
public MyServiceConfiguration(string apiKey)
{
if (string.IsNullOrEmpty(apiKey)) throw new ArgumentException(...);
this.ApiKey = apiKey;
}
}
И измените ваш MyService
конструктор на:
public MyService(MyServiceConfiguration config, HttpClient httpClient)
Новый MyServiceConfiguration
можно легко зарегистрировать следующим образом:
services.AddSingleton(new MyServiceConfiguration("some api key from config"));
Пожалуйста, обратите внимание на использование инъекции HttpClient
в Singleton
потребителей. Как описано здесь , здесь и здесь , могут возникать многочисленные проблемы, когда экземпляры HttpClient
повторно используются в течение срока действия приложения, которое будет использоваться с вашим текущая конфигурация Когда вы зарегистрируете MyService
как Singleton
, HttpClient
станет зависимостью .
Вместо этого зарегистрируйте MyService
как Scoped
. В идеале , ASP.NET Core должен быть в состоянии обнаружить эту зависимую зависимость для вас, но в своей текущей реализации (v2.2) он этого не делает, что означает, что вам лучше защитить себя, сделав ваш непосредственный потребитель Scoped
(и четко документирует, почему это так, чтобы не дать следующему разработчику снова все испортить).