Primeiro, sou programador iniciante; Na verdade, estou terminando o curso AS com um projeto final no verão. No meu novo trabalho, quando não há um projeto para mim (eles estão esperando para preencher a equipe com mais contratações), recebi livros para ler e aprender enquanto espero - alguns livros didáticos, outros nem tanto (como o Code Complete). Depois de ler esses livros, voltei-me à Internet para aprender o máximo possível e comecei a aprender sobre o SOLID e o DI (falamos um pouco sobre o princípio de substituição de Liskov, mas não muitas outras idéias sobre o SOLID). Então, como aprendi, sentei-me para aprender melhor e comecei a escrever algum código para utilizar o DI manualmente (não há estruturas de DI nos computadores de desenvolvimento).
A coisa é que, ao fazê-lo, percebo que parece familiar ... e parece que é muito parecido com o trabalho que fiz no passado usando composição de classes abstratas usando polimorfismo. Estou perdendo uma imagem maior aqui? Existe algo sobre DI (pelo menos à mão) que vai além disso? Eu entendo a possibilidade de ter configurações que não estão no código de algumas estruturas de DI, com grandes benefícios no que diz respeito a mudar as coisas sem precisar recompilar, mas ao fazer isso manualmente, não tenho certeza se é diferente do indicado acima ... Algumas dicas sobre isso seriam muito úteis!