Diskuze: Dependency Injection
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 4 zpráv z 4.
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
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.
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(IProductRepository productRepository)
{
_productRepository = productRepository;
}
public IEnumerable<Product> GetProductsAndApplyDiscount(
IProductDiscountStrategy discount)
{
IEnumerable<Product> products = _productRepository.FindAll();
foreach (Product p in products)
p.AdjustPriceWith(discount);
return products;
}
}
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.
Zobrazeno 4 zpráv z 4.