Dependency injection – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Dependency injection – .NET – Fórum – Programujte.comDependency injection – .NET – Fórum – Programujte.com

 

DI
~ Anonymní uživatel
3 příspěvky
10. 2. 2013   #1
-
0
-

Ahojte,

Stretol som sa s pojmom Dependency injection. Pozeram si nejake clanky, ale stale mi nie je celkom jasne o co ide.. Vedel by mi to niekto v kratkosti na nejakom pripade v C# vysvetlit ? Dakujem

Nahlásit jako SPAM
IP: 89.173.138.–
Vaizo0
Stálý člen
10. 2. 2013   #2
-
0
-

Docela pěkný je článek v AJ: http://tutorials.jenkov.com/dependency-injection/index.html

Pokusím se to velmi rychle demonstrovat na příkladě:

Máš třídu, která má v konstruktoru řadu dalších tříd. Abys vytvořil tyto třídy musíš jim předat do konstruktoru nějaké další objekty. Je jasné, že vytvoření takového objektu by bylo vcelku pracné a stejně tak i úprava takového kódu. Tuto situaci se snaží řešit dependecy injection frameworky, které ti ten objekt vytvoří sami. 

Většinou je potřeba na objekt přidat interface a DI už sama ví, jak vytvořit instanci pro daný interface.

Nahlásit jako SPAM
IP: 37.188.232.–
zlz
~ Anonymní uživatel
634 příspěvků
10. 2. 2013   #3
-
0
-

To bylo tak rychle, že jsi ani nestihl ten příklad :)

DI spočívá jen v tom, že věci, na kterých je nějaký objekt závislý, se dodávají zvenku, aby je ten dotyčný objekt nemusel řešit a snadno se nahrazovaly.

Volba implementace a řešení složitějších závislostí apod. je přímo související, ale jiná věc.

Nahlásit jako SPAM
IP: 80.188.216.–
DJ
~ Anonymní uživatel
1 příspěvek
12. 2. 2013   #4
-
0
-

Vdaka. S tymto vysvetlenim sa mi uz aj tie clanky citali jednoduchsie :) V tejto suvislosti ma napadla este jedna vec. Narazil som na isty framework Ninject, ktory by mal pracu s DI ulahcovat. (ak to chapem spravne).

Skusal som to podla tohto, ale stale mi to nie je celkom jasne: http://www.codeproject.com/Articles/424749/Dependency-Injection-Using-Ninject

Zrejme budu na vine moje diery v AJ :/

Nahlásit jako SPAM
IP: 212.89.227.–
Vaizo0
Stálý člen
15. 2. 2013   #5
-
0
-
Nahlásit jako SPAM
IP: 85.93.127.–
Vaizo0
Stálý člen
Nahlásit jako SPAM
IP: 85.93.127.–
DI
~ Anonymní uživatel
3 příspěvky
16. 2. 2013   #7
-
0
-

Mne sa tomu tazko chapalo, prrtoze som DI vlastne bezne pouzival bwz toho abny som vedel, ze ide o nejaky patter, pretro ma to trochu miatlo :P Co je ninject cca rozumiem, nerozumiem tomu ako funguje a hlavne preco ho vlastne pouzivat ...

Nahlásit jako SPAM
IP: 78.98.55.–
DI
~ Anonymní uživatel
3 příspěvky
3. 3. 2013   #8
-
0
-

Nasiel som si celkom pekny tutorial:

http://www.codeproject.com/…sing-Ninject.

Ak tomu teda chapem spravne, Ninject, alebo iny kontajner sa vlastne stara o to, ze v pripade ze sa cez neho necham vytvorit instancie, postara sa mi o "vyplnenie" vsetkych zavislosti, resp o to, aby ta instancia mohla "zit".

V tom kode akurat nerozumiem poslednemu kroku. 

kernel.Bind<IWeatherStation>().To<WeatherStation>().WithConstructorArgument
(
	"weatherConditions",
	new WeatherCondition[] 
	{ 
	new WeatherCondition{ Name = "HOT", Color = "Yellow" }, 
	new WeatherCondition{ Name = "COLD", Color = "Blue" }, 
	new WeatherCondition{ Name = "STORM", Color = "DarkGray" }, 
	new WeatherCondition{ Name = "SNOW", Color = "White" }, 
	new WeatherCondition{ Name = "WINDY", Color = "Gray" }
	}
);

Ak to chapem spravne, ninjectu pomocou ".WithConstructorArgumen" poviem ako ma vyplnit druhy parameter ktory prijima WeatherStation. Prvy nie je nutny, pretoze to som definoval predtym a teda mu dohodi instanciu ConsoleDisplay. Preco tam je ale tento string  ""weatherConditions"" ?

Nahlásit jako SPAM
IP: 89.173.138.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 45 hostů

Podobná vlákna

Dependency injection — založil Facedown

SQL injection — založil Anonymous

Sql injection — založil Paja2

Dll injection pro OpenGL — založil ingiraxo

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý