此问题可以通过给目标类添加一个默认构造函数来解决。
例如,如果目标类是以下示例:
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);
 
                    上一篇:ActivatorUtilities.CreateInstance在构造函数中能否使用可空类型?
                
下一篇:Active Admin - 自定义排序/排序,使用在 has_many 到 has_many 多态关联中的位置