此问题可以通过给目标类添加一个默认构造函数来解决。
例如,如果目标类是以下示例:
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 多态关联中的位置