L'unité Injecter des classes différentes pour la même interface
J'ai une interface: IFoo
Deux classes implémentant cette interface: FooOne
et FooTwo
Et deux classes ClassOne
et ClassTwo
de la réception d'un IFoo
paramètre dans le constructeur.
Comment j'ai configurer l'unité afin ClassOne
reçoit un FooOne
instance et ClassTwo
reçoit un FooTwo
l'aide d'un seul conteneur?
Je ne peux pas le faire au moment de l'exécution de sorte qu'il doit être dans le fichier de configuration.
OriginalL'auteur pomber | 2012-10-29
Vous devez vous connecter pour publier un commentaire.
Ont un look à la L'unité de documentation.
Pour un plus lisible fichier de configuration, vous devez définir le type d'alias pour
IFoo
,FooOne
,FooTwo
,ClassOne
etClassTwo
. Ensuite, vous devez enregistrer les mappages deIFoo
à vos implémentations. Vous devez définir unname
pour les mappages.Pour les consommateurs de
IFoo
vous devez vous inscrire à unInjectionConstructor
.Votre config va ressembler à quelque chose comme ceci:
C'est le test correspondant qui montre comment cela fonctionne.
Mise à jour
Au moment de l'exécution, vous pouvez le faire comme ceci
voir ma mise à jour
OriginalL'auteur Sebastian Weber
Vous avez besoin de leur donner de l'enregistrement des noms pour ce faire:
Prises de Résoudre Des Instances De Types À L'Aide De L'Unité
app.config
. Pouvez-vous dire comment faire pour gérer ce cas? Comment s'assurer que les non-valeur par défaut est utilisé si un tel type est trouvé inscrit ?Découvrez la réponse de @SebastianWeber pour plus de détails sur l'utilisation de fichiers de configuration pour enregistrer vos services.
Merci pour votre réponse. Mais cette réponse n'est pas utile pour moi. Parce que je veux m'assurer que l'instance par défaut enregistré auprès de l'Unité est "non" et celui configuré par l'utilisateur est toujours fournie.
Je mettrais à votre inscription dans le fichier de configuration - puis si ils veulent changer, ils vont le modifier pour modifier le vôtre à la leur. Cela permettrait de faire ce que vous voulez.
OriginalL'auteur Fenton
J'ai installé dans mon application comme cela
Installé le Package Nuget l'Unité de la version 4.0.1
Dans mon Application.config
Dans Mon Application.xaml.cs
OriginalL'auteur dnxit