Я смотрю на внедрение зависимостей, вижу преимущества, но у меня проблемы с синтаксисом, который он создает. У меня есть этот пример
public class BusinessProducts
{
IDataContext _dx;
BusinessProducts(IDataContext dx)
{
_dx = dx;
}
public List<Product> GetProducts()
{
return dx.GetProducts();
}
}
Проблема в том, что я не хочу писать
BusinessProducts bp = new BusinessProducts(dataContextImplementation);
Я бы продолжил писать
BusinessProducts bp = new BusinessProducts();
потому что я чувствую, что первая альтернатива просто кажется неестественной. Я не хочу знать, от чего "зависит" BusinessProduct, чтобы получить продукты, также я чувствую, что это делает мой код более нечитаемым.
Существуют ли какие-либо альтернативы этому подходу, поскольку я хотел бы сохранить свой исходный синтаксис для создания объектов, но я хотел бы по-прежнему иметь возможность имитировать зависимости при модульном тестировании, или это могут сделать для меня эти структуры внедрения зависимостей?
Я пишу на c #, но приветствуются альтернативы из других языков