Diskuze: Dependency Injection

C# .NET .NET (C# a Visual Basic) Dependency Injection American English version English version

Avatar
Tommy
Člen
Avatar
Tommy:

V akej situácií je vhodné použiť Constructor Injection a v ktorej Method Injection?

 
Odpovědět 17.3.2014 20:46
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Tommy
David Čápka:

O MethodInjection jsem ještě neslyšel, většinou se dělá přes konstruktor nebo property. Nějak mě nenapadá využití a co jsem googlil, tak všude mají v examplu metodu init(), což supluje za konstruktor.

Nahoru Odpovědět 17.3.2014 20:50
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Tommy
Člen
Avatar
Tommy:

Neviem, či tomu správne rozumiem. Ale method injection by sa mala použiť napr. v takom prípade, že potrebujem aplikovať len nejaké pravidlá.

No to je len moja domnienka.

Prikladám úkažku:
public class ProductService
{
private IProductRepository _productRepository;
public ProductService(I­ProductReposi­tory productRepository)
{
_productRepository = productRepository;
}
public IEnumerable<Pro­duct> GetProductsAn­dApplyDiscount(
IProductDiscou­ntStrategy discount)
{
IEnumerable<Pro­duct> products = _productReposi­tory.FindAll();
foreach (Product p in products)
p.AdjustPrice­With(discount);
return products;
}
}

Editováno 17.3.2014 21:03
 
Nahoru Odpovědět 17.3.2014 21:02
Avatar
Drahomír Hanák
Tým ITnetwork
Avatar
Odpovídá na Tommy
Drahomír Hanák:

Constructor Injection se mně osobně zdá nejčistší způsob předávání závislostí. Například proto, že bez závislostí pak nelze ten objekt vytvořit, je na první pohled jasné, na čem objekt závisí atp. V některých případech to třeba může být ukazatel na porušení Single Responsibility (když toho objekt dělá moc a má tak spoustu závislostí). Využít ho někdy ale nejde (např. nechci ho v daném případě použít) a pak bych použil Setter Injection. Je to ale můj subjektivní názor.

 
Nahoru Odpovědět 17.3.2014 21:08
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.