DI = Dependency Injection, tj. zapomeňte na klíčové slovo new a všechno si nechte "nainjectovat". Injektáž se obvykle provádí prostřednictvím konstruktoru, tak jak to máte v posledním příkladu. Sám instance nevytváříte, o to se stará infrastruktura (v případě DI se jí obvykle říká "container"). Vaším úkolem je jenom příslušnou službu do containeru zaregistrovat. V případě čistého ASP.NET Core je to v metodě Startup.cs:ConfigureServices(), kde dáváte něco jako
services.AddTransient<IDbLogger, DbLogger>();
...variant registrace je několik, v zásadě se liší životním cyklem, atp. No a samotné použití pak záleží na typu aplikace (vynechám teď záměrně infrastrukturní detaily typu composition-root, atp.), např. v ASP.NET Controlleru prostě přidáte constructor (pokud tam už není) a do něj dáte IDbLogger jako parametr. ASP.NET infrastruktura pak už zařídí, aby se tam při vzniku controlleru ta služba dostala.
|