[WCF] Utiliser Unity avec un service WCF
Unity
est le conteneur IoC (Inversion of Controls, inversion de contrôles) mis à disposition par Microsoft.
Celui-ci permet de faire de l’injection de dépendances, afin de vous permettre de développer des applications faiblement couplées. Dans le cadre d’un article que je suis en train d’écrire, j’ai tenté d’utiliser un container Unity pour utiliser un service WCF.
Au niveau de la configuration, j’ai donc utiliser ceci:
Puis j’ai créer un petit singleton qui va configurer mon container et me le retourner:
Le problème, c’est que si j’exécute mon code, au moyen du code suivant:
Je reçoit cette erreur:
Resolution of the dependency failed, type = "NwEmployeesViewer.Client.WPF.NorthwindSvc.INorthwindService", name = "". Exception message is: The current build operation (build key Build Key[NwEmployeesViewer.Client.WPF.NorthwindSvc.NorthwindServiceClient, null]) failed: The current build operation (build key Build Key[NwEmployeesViewer.Client.WPF.NorthwindSvc.NorthwindServiceClient, null]) failed: The type NorthwindServiceClient has multiple constructors of length 2. Unable to disambiguate. (Strategy type DynamicMethodConstructorStrategy, index 0) (Strategy type BuildPlanStrategy, index 3)
Pour faire clair, le problème semble venir du fait que le contructeur des services WCF possède plusieurs surcharges (un vide, un pour spécifier un endpoint, etc.) et que Unity n’est pas en mesure de trouver le constructeur par défaut (le constructeur vide). Il va donc falloir lui forcer la main, à savoir lui indiquer que le constructeur à utiliser prend en paramètre le nom de notre endpoint:
Et le tour est joué ! 
A+
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :