Questions marquées «dependency-injection»

L'injection de dépendances est un modèle de conception dans lequel les dépendances (instances d'objets, propriétés) d'un composant sont définies via le ou les constructeurs, les méthodes ou les champs (propriétés). C'est une forme spéciale de l'inversion de dépendance plus générale.

2
Injection de dépendance vs méthodes statiques
J'ai eu une discussion intéressante aujourd'hui avec un autre développeur sur la façon d'aborder une classe avec une méthode qui accepte une chaîne et génère une chaîne. Imaginez quelque chose comme ce qui suit qui est complètement composé à des fins d'exemple public string GetStringPart(string input) { //Some input validation …

5
Quels sont les avantages de l'injection de dépendance dans les cas où presque tout le monde a besoin d'accéder à une structure de données commune?
Il y a beaucoup de raisons pour lesquelles les globaux sont mauvais en POO. Si le nombre ou la taille des objets à partager est trop important pour être efficacement transmis dans les paramètres de fonction, tout le monde recommande généralement l' injection de dépendances plutôt qu'un objet global. Cependant, …

2
Problème de compréhension du mot «couture»
Je lis "Dependency Injection in .NET" de Mark Seemann (c'est fantastique, et doit l'avoir) et l'auteur utilise souvent le mot "couture". Mais je ne comprends pas ce que cela signifie. Voici un exemple d'utilisation de ce mot: Le chapitre 7 explique comment composer des objets dans divers cadres concrets tels …



2
Existe-t-il des preuves que l'utilisation de l'injection de dépendance améliore les résultats en génie logiciel?
Malgré sa popularité, existe-t-il des preuves empiriques montrant que l'injection de dépendance (et / ou l'utilisation d'un conteneur DI) aide, par exemple, à réduire le nombre de bogues, à améliorer la maintenabilité ou à augmenter la vitesse de développement sur des projets logiciels réels?

1
Injection de dépendances / pratiques de conteneur IoC lors de l'écriture de frameworks
J'ai utilisé divers conteneurs IoC (Castle.Windsor, Autofac, MEF, etc.) pour .Net dans un certain nombre de projets. J'ai constaté qu'ils ont tendance à être fréquemment maltraités et à encourager un certain nombre de mauvaises pratiques. Existe-t-il des pratiques établies pour l'utilisation des conteneurs IoC, en particulier lors de la fourniture …




3
Vendez-moi sur des conteneurs IoC, s'il vous plaît
J'ai vu plusieurs recommander l'utilisation de conteneurs IoC dans le code. La motivation est simple. Prenez le code injecté de dépendance suivant: class UnitUnderTest { std::auto_ptr<Dependency> d_; public: UnitUnderTest( std::auto_ptr<Dependency> d = std::auto_ptr<Dependency>(new ConcreteDependency) ) : d_(d) { } }; TEST(UnitUnderTest, Example) { std::auto_ptr<Dependency> dep(new MockDependency); UnitUnderTest uut(dep); //Test here …


4
L'injection de dépendances doit-elle être effectuée dans le ctor ou par méthode?
Considérer: public class CtorInjectionExample { public CtorInjectionExample(ISomeRepository SomeRepositoryIn, IOtherRepository OtherRepositoryIn) { this._someRepository = SomeRepositoryIn; this._otherRepository = OtherRepositoryIn; } public void SomeMethod() { //use this._someRepository } public void OtherMethod() { //use this._otherRepository } } contre: public class MethodInjectionExample { public MethodInjectionExample() { } public void SomeMethod(ISomeRepository SomeRepositoryIn) { //use SomeRepositoryIn } …


5
Puis-je utiliser l'injection de dépendance sans interrompre l'encapsulation?
Voici ma solution et mes projets: Librairie (solution) BookStore.Coupler (projet) Bootstrapper.cs BookStore.Domain (projet) CreateBookCommandValidator.cs CompositeValidator.cs IValidate.cs IValidator.cs ICommandHandler.cs BookStore.Infrastructure (projet) CreateBookCommandHandler.cs ValidationCommandHandlerDecorator.cs BookStore.Web (projet) Global.asax BookStore.BatchProcesses (projet) Program.cs Bootstrapper.cs : public static class Bootstrapper.cs { // I'm using SimpleInjector as my DI Container public static void Initialize(Container container) { container.RegisterManyForOpenGeneric(typeof(ICommandHandler<>), …

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.