Я использую шаблон репозитория со служебным слоем в моем приложении.Чтобы следовать рекомендациям, я создаю сервис для каждого репо.
Два моих сервиса зависят друг от друга.Мне нужно вызывать по крайней мере один метод для каждого из другой службы.
Я использую внедрение зависимостей для разрешения этих зависимостей.Кажется, что проблема заключается в следующем:
мой контейнер DI разрешает все вышеперечисленное.
Я звоню в класс A, и экземпляр класса B получает инъекцию ...
Этозаставляет контейнер создавать новый экземпляр класса A для класса B ....
, который, в свою очередь, вводит новый класс A для класса B ... и так далее ...
Я думаю, что это основной недостаток дизайна с моей стороны, но я не вижу очевидного способа обойти это.
Есть идеи?
Пример
public UserService
{
private readonly IUserRepository userRepo;
private readonly ITransactionService transactionService;
//ctor here....
public ExampleUserMethod()
{
transactionService.GetTransactions();
//do other things
}
public GetUsers()
{
//return users
}
}
public TransactionService
{
private readonly ITransactionRepository transactionRepo;
private readonly IUserService userService;
//ctor here....
public ExampleTransactionMethod()
{
userService.GetUsers();
//Do other things...
}
public GetTransactions()
{
//return transactions
}
}