11
votes

Unity Constructor Injection avec d'autres paramètres

J'ai une classe avec un constructeur qui ressemble à ce qui suit:

BatchService batchService = DIContainer.Resolve<BatchService>()


0 commentaires

3 Réponses :


5
votes

Vous pouvez utiliser paramètreoverride : xxx


0 commentaires

8
votes

S'il vous plaît ne pas Abuse Unity comme ServiceLocator .

Si vous souhaitez créer des objets qui nécessitent des paramètres d'exécution, utilisez une usine. Vous pouvez même laisser tomber l'acte de mettre en œuvre cette usine en utilisant la version Unity de usines dactylographiées ou Laissez l'unité générer des délégués d'usine pour vous.


5 commentaires

C'est le seul commentaire qui guide dans la bonne utilisation plutôt que de simplement répondre à la question de l'OP


Bonne réponse. L'article lié nécessite-t-il une bibliothèque tierce partie appelée «Tecx»? Il est difficile de savoir si le code y travaille hors de la boîte avec l'unité ou non.


@JOSHNOE TYPEDFactories ne fait pas partie de l'unité. Tecx n'est pas vraiment une bibliothèque mais un assortiment de solutions à divers problèmes qui sont venus à un moment donné. Mais c'est le système d'exploitation pour que vous puissiez saisir une partie du code l'utiliser comme vous le souhaitez.


@Sebastianweber serait reconnaissant si vous pouviez expliquer comment vous feriez cela avec une usine manuellement, sans utiliser des usines dactylographiées ni des délégués d'usine. J'essaie de faire une chose similaire moi-même mais je pense que je suis légèrement hors de piste Stackoverflow.com/Questions/28073920/...


Cette réponse aborde le sujet tangentiel de cette question et manque le problème réel.



-1
votes

Tout d'abord, ce n'est pas une bonne idée Mix Ilogger avec la logique d'entreprise. Vous pouvez créer un iLogger directement dans Batchservice ou Resolvez thru [Dépendance] attribut. DI Ce n'est pas panacée, la création d'objets commerciaux ne devrait pas dépendre de ilogger

Utiliser Nouveau injectionParameter ("Utilisateur") Jetez un coup d'œil s'il vous plaît Enregistrement des paramètres injectés et des valeurs de propriété pour plus de détails


0 commentaires