[Article] Injection de dépendances en .NET
Cette discussion est consacrée à l'article intitulé "Injection de dépendances en .NET, pattern, intérêt et outils"
Dans cet article, on va voir ce qu'est l'injection de dépendances, son intérêt, et les outils permettant de la mettre en œuvre.
Vous pouvez y poster vos commentaires concernant l'article.
L'article se trouve à l'adresses suivante :
http://philippe.developpez.com/artic...dedependances/
7 ans plus tard, dans l'univers de l'injection de dépendance
Bonjour,
7 ans plus tard, j'imagine que cet article est encore en forte visibilité des développeurs de passage, qui se basent probablement dessus pour faire le choix de leur conteneur IoC.
Mais aujourd'hui, est-il toujours valable ? Comment ont évolué ces conteneurs ? Certains ont-ils disparu ? Ou au contraire gagné en maturité ?
Par exemple faut-il toujours, avec Spring.Net, utiliser à la fois un cast et une magic string 8O pour accéder à une instance ? (ce que je trouve aberrant, ça ne passerait jamais les revues de code chez nous !).
Bref, ce serait super si quelqu'un pouvait actualiser cet article. Si vous avez aussi des retours d'expérience sur l'un et l'autre ce serait aussi super de les poster ici (à noter : pour moi juste dire "ça marche bien chez nous" c'est pas vraiment un retour d'expérience hein !).
Au plaisir de vous lire...
PS : Personnellement j'ai toujours eu du mal à comprendre l’intérêt de ces conteneurs : ça fait longtemps qu'on fait de l'injection de dépendances chez nous, et on n'a pas utilisé pour autant un composant externe. Alors quand un auditeur écrit noir sur blanc dans son rapport "il n'y pas de technique d'IOC sur le projet étant donné qu'il n'y a aucune référence à Ninject ou Spring.Net", et qu'il rajoute un lien vers l'article de developpez.com, on se dit juste qu'il n'a rien compris ! Et en plus après il faut aller expliquer à votre DG que l'auditeur est un boulet... :weird:
Question / Problème urgent
Désolé de remonter un vieux sujet, mais j'ai une question très urgente concernant le tuto :
Maîtrisant plutôt les notions de POO. Je viens de me lancer dans l'étude du patron : injection de dépendances.
Votre premier exemple :
Code:
1 2 3 4 5 6 7 8 9
|
public class CustomerService
{
public Customer GetOneCustomer(int customerId)
{
CustomerRepository _repository = new CustomerRepository();
return new Customer(_repository.GetOneById(customerId));
}
} |
D'après le tuto, pour appliquer l'injection de dépendance ici, on doit appliquer les modifications suivantes :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
public class CustomerService
{
private CustomerRepository _repository;
// Modif 1 : Nouveau mutateur
public CustomerRepository Repository {
set{ _repository = value; }
}
public Customer GetOneCustomer(int customerId)
{
// Modif 2 : On retire la création d'un CustomerRoepository, mais ne doit-il pas être créé ailleurs ? Alors où ??
return new Customer(_repository.GetOneById(customerId));
}
} |
Concernant la version modfiée :
En appelant GetOneCustomer, je vais forcément me retrouver avec un null ref exception puisque l'objet _repository n'est jamais créé.
La question est simple : Où crée t-on l'attribut _repository ?
... en plus ici on n'accède même pas au mutateur puisqu'on ne fait que lire l'attribut _repository.
C'est assez urgent. À l'avance, merci pour votre aide :)