我有一个类声明,
ConsoleLogger : ILogger
它需要传递给构造函数的类型。
public ConsoleLogger(Type classType)
因此,当将此行更改为DI时,会有点困难。
private readonly ILogger Logger = new ConsoleLogger(GetType());
如果我想像这样将其注册到ServiceCollection,是否可以传递类型?
sc.AddSingleton<ILogger, ConsoleLogger>(provider =>
new ConsoleLogger(GetType()) // not GetType() but the type you're injecting into.
)
所以,如果我有一个带有这样的构造函数的类,
public SomeClass(ILogger logger){}
应该是这样吗?
sc.AddSingleton<ILogger, ConsoleLogger>(provider =>
new ConsoleLogger(typeof(SomeClass))
)
如果我可以让它动态地工作,那会很好吗?