此问题可以通过给目标类添加一个默认构造函数来解决。
例如,如果目标类是以下示例:
public class MyClass
{
private readonly ILogger _logger;
public MyClass(ILogger logger)
{
_logger = logger;
}
public void DoSomething()
{
_logger.LogInformation("Doing something...");
}
}
为了让ActivatorUtilities.CreateInstance正常工作,我们需要添加一个默认构造函数:
public class MyClass
{
private readonly ILogger _logger;
public MyClass()
{
// 默认构造函数不包括ILogger参数
}
public MyClass(ILogger logger)
{
_logger = logger;
}
public void DoSomething()
{
_logger.LogInformation("Doing something...");
}
}
现在,我们可以使用ActivatorUtilities.CreateInstance来创建MyClass的实例:
var myClass = ActivatorUtilities.CreateInstance(serviceProvider);