.NET CORE 9 DI для создания динамического экземпляра и его необходимых услуг [закрыто]C#

Место общения программистов C#
Ответить
Anonymous
 .NET CORE 9 DI для создания динамического экземпляра и его необходимых услуг [закрыто]

Сообщение Anonymous »

У меня есть следующие 2 класса. MyClass сочиняет myotherclasses . Каждый из них требует разных ilogger :
public class MyClass
{
private readonly ILogger _logger;
private Dictionary _instances;
public MyClass(ILogger logger, int count)
{
_logger = logger;
_instances = new Dictionary();
}
public void Operate(string id, int var1, string var2, ...)
{
if (!_instances.ContainsKey(id))
_instances.Add(id, new MyOtherClass(/* XXX */, var1, var2));
}
}
< /code>
public class MyOtherClass
{
private int _var1;
private string _var2;
private readonly ILogger _logger;
public MyOtherClass(ILogger logger, int var1, string var2)
{
_logger = logger;
_var1 = var1;
_var2 = var2;
}
}
< /code>
What's the best .Net Core C# way of achieving this instance creation? I am thinking of:
  • Register and GetRequiredService(). Это решило бы ilogger , но я сомневаюсь, что он решит другие входные параметры конструктора.
  • MyClass Constructor использует iloggerfactory в качестве инъекционного параметра и используйте его для создания необходимого ilogger для самого и myotherclass .
i resort resort (2)

ipublic class MyClass
{
private readonly ILoggerFactory _loggerFactory;
private readonly ILogger _logger;
private Dictionary _instances;
public MyClass(ILoggerFactory logger, int count)
{
_loggerFactory = logger;
_logger = logger.CreateLogger();
_instances = new Dictionary();
}
public void Operate(string id, int var1, string var2, ...)
{
if (!_instances.ContainsKey(id))
_instances.Add(id, new MyOtherClass(_loggerFactory.CreateLogger(), var1, var2));
}
}
< /code>
public class MyOtherClass
{
private int _var1;
private string _var2;
private readonly ILogger _logger;
public MyOtherClass(ILogger logger, int var1, string var2)
{
_logger = logger;
_var1 = var1;
_var2 = var2;
}
}


Подробнее здесь: https://stackoverflow.com/questions/797 ... d-services
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»