是否可以针对特定范围更改接口的实现? 我想拥有的是“ ILogService”的默认实现,它将数据记录到磁盘。 但是对于任务计划程序,我使用“ IServiceScopeFactory.CreateScope()”来解决任务的实现,但是在这种情况下,我想使用其他实现进行记录,以便数据最终存储在我的数据库中。
interface ILogService { void Write(string text); }
这是默认实现
class LogDisk : ILogService { void Write(string text) { ... } }
但是当我在类x使用ILogService的范围内执行GetService()时,我想使用它
class LogTask : ILogService { void Write(string text) { ... } }
是否可以针对一个特定范围更改接口的实现?
示例
public class TaskFactory : ITaskFactory
{
private IServiceScopeFactory _serviceScopeFactory;
public TaskFactory(IServiceScopeFactory serviceScopeFactory)
{
this._serviceScopeFactory = serviceScopeFactory;
}
public ITaskDefinition GetDefinition(ETaskType taskType)
{
using (var scope = this._serviceScopeFactory.CreateScope())
{
var provider = scope.ServiceProvider.GetService<ITaskX>();
return null;
}
}
}
在任务中,如果要使用实现A或B,我不想看如何实现。每个任务都有自己的依赖关系,这就是我希望依赖关系注入要解决的问题。但是我要更改的唯一实现是ILogService的实现。