Можно ли изменить реализацию интерфейса для конкретной области?Я хотел бы иметь стандартную реализацию ILogService, которая будет записывать данные на диск.Но для планировщика задач я использую «IServiceScopeFactory.CreateScope ()», чтобы разрешить реализацию задач, но в этом случае я хотел бы использовать другую реализацию для ведения журнала, чтобы данные попадали в мою базу данных.
interface ILogService { void Write(string text); }
Это имеет реализацию по умолчанию
class LogDisk : ILogService { void Write(string text) { ... } }
Но когда я делаю GetService () в области, где класс x использует ILogService, я хотел бы использовать это
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.