Qual è la vera differenza tra “Bastard Injection” e “Poor Man’s Injection”

Dal libro “Dependency Injection in .Net” so che il grafico dell’object dovrebbe essere creato nella Composition Root dell’applicazione che ha molto senso per me quando si utilizza un contenitore IoC.

In tutte le applicazioni che ho visto quando viene fatto un tentativo di usare DI, ci sono sempre due costruttori: quello con le dipendenze come parametri e quello “predefinito” senza parametri che a sua volta chiama l’altro “newing” su tutte le dipendenze ma, nel libro di cui sopra questo è chiamato il “anti-pattern di Bastard Injection” ed è quello che ho usato come “Poor Man’s Injection”.

Considerando tutto ciò, direi che “Poor Man’s Injection” semplicemente non sta usando un contenitore IoC e invece codificherà manualmente tutto il grafo degli oggetti su detta Composition Root .

Quindi le mie domande sono:

  1. Sto capendo correttamente questi concetti o sono completamente fuori strada?
  2. Se è ancora necessario registrare tutte le dipendenze nel contenitore IoC rispetto alla loro codifica manuale nello stesso stesso Root di composizione, qual è il vero vantaggio dell’utilizzo di un contenitore IoC?
  3. Se ho frainteso cosa sia realmente “Poor Man’s Injection”, qualcuno potrebbe, per favore, chiarirlo?

Grazie