Olá,
Estudando o SOLID me veio uma complicação ao tentar utilizado em uma aplicação MVC.
O principio DIP diz que não se deve depender depender de uma implementação concreta de uma classe e sim sua abstração. Mas vamos lá...
Se separamos a aplicação em camada de visualização (controller e view) e camada de modelo (service, entity, etc.) e controller tem um método para exibir um item na tela.
Ele recebe por parâmetro o ID do item, passa pro service e lá ele se vira. Mas o service precisa me retornar uma instância da classe do item que eu procurei, e o controller sabe disso e depende disso. Pois só com esse objeto especifico ele pode passar para view.
O controller conhecer o que o service retorna fere o DIP? Ou saber o que ele retorna não é conhecer sua implementação, apenas sua assinatura?
Sempre que vejo exemplos de uso de SOLID, nunca é trabalhado retorno dos métodos, sempre é em cenários que o sucesso é o não lançamento de exceções. Mas em muitos casos dependemos do retorno de um método para passar para o próximo ou retornar algo, e fica essa duvida sobre saber do retorno é saber da implementação.