В моем домене у меня есть несколько «процессорных» классов, которые содержат основную часть бизнес-логики. Используя StructureMap с соглашениями по умолчанию, я внедряю репозитории в эти классы для их различных операций ввода-вывода (базы данных, файловая система и т. Д.). Например:
public interface IHelloWorldProcessor
{
string HelloWorld();
}
public class HelloWorldProcessor : IHelloWorldProcessor
{
private IDBRepository _dbRepository;
public HelloWorldProcessor(IDBRepository dbRepository)
{
_dbRepository = dbrepository;
}
public string HelloWorld(){ return _dbRepository.GetHelloWorld(); }
}
Теперь есть несколько репозиториев, которые я хотел бы сделать доступными для всех процессоров, поэтому я создал такой базовый класс:
public class BaseProcessor
{
protected ICommonRepository _commonRepository;
public BaseProcessor(ICommonRepository commonRepository)
{
_commonRepository = commonRepository;
}
}
Но когда другие мои процессоры наследуют его, я получаю сообщение об ошибке компилятора о том, что нет никакого конструктора для BaseProcessor, который принимает нулевые аргументы.
Есть ли способ сделать то, что я пытаюсь сделать здесь? То есть иметь общие зависимости, внедренные в базовый класс, которые могут использовать мои другие классы, не записывая инъекции в каждый из них?