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 .
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
Мобильная версия