Я использую ядро .net,
Я получил простой интерфейс что-то вроде:
public interface ITask
{
string TaskName { get; }
void Execute(TaskDetails item);
}
У меня есть много классов, которые реализуют это, пример класса:
public class Task1Adapter : ITaskAdapter
{
public string TaskName => "MyTask...";
public void Execute(TaskDetails item)
{
var x = 1 + 1;
}
}
Затем я получил раздел DI, в котором я добавляю строку для каждого класса -
services.AddSingleton<ITaskAdapter, Task1Adapter>();
Моя проблема в том, что я получил довольно много заданий и, если возможно, я бы предпочел не иметь более 100 строк AddSingleton.
Есть ли способ как-то добавить все классы, которые реализуют этот интерфейс за один раз, без необходимости добавлять AddSingleton
логику для каждого нового класса, который я добавляю?
Edit:
Поскольку мне нужно вызывать разные задачи / классы, которые динамически реализуют интерфейс, я использовал следующую логику во время выполнения -
private readonly IEnumerable<IFilesWorkerAdapter> _taskAdapter;
_taskAdapter.FirstOrDefault(e => e.TaskName== taskNameFromExternalSource).Execute();