Рассмотрим ниже:
public class DependencyA {}
public class DependencyB {}
public class DependencyC {}
public class DependencyD {}
public class Service1
{
public Service1(DependencyA a, DependencyB b, DependencyC c, DependencyD d) { ... }
}
public class Service2
{
public Service2(DependencyA a, DependencyB b, DependencyC c, DependencyD d) { ... }
}
public class Service3
{
public Service3(DependencyA a, DependencyB b, DependencyC c, DependencyD d) { ... }
}
Я обнаружил, что многие из моих служб зависят от нескольких общих компонентов, и намереваюсь реализовать решение «перехватить все», как показано ниже (все подключено через Windsor), чтобы сохранить повторение кода в конструкторах Service.
public class DependencyContainer
{
public DependencyA A { get; set; }
public DependencyB B { get; set; }
public DependencyC C { get; set; }
public DependencyD D { get; set; }
}
public class Service1
{
public Service1 (DependencyContainer container) { ... }
}
В качестве альтернативы я мог бы создать класс ServiceBase.
public class ServiceBase
{
public DependancyA A { get; set; }
public DependancyB B { get; set; }
public DependancyC C { get; set; }
public DependancyD D { get; set; }
}
public class Service1 : ServiceBase {}
Реальный вопрос в том, подчеркивает ли это более широкую проблему дизайна в сервисах?
Возможно, я захожу слишком далеко, но это все подлинные зависимости.
Если так, то как мне обойти это?
Если нет, является ли предлагаемое решение верным способом достижения этой цели?