Je veux isoler tout mon code de la bibliothèque de conteneurs IoC que j'ai choisie (Unity). Pour ce faire, j'ai créé une interface IContainer qui expose Register() et Resolve(). J'ai créé une classe appelée UnityContainerAdapter qui implémente IContainer et qui enveloppe le vrai conteneur. Ainsi, seul l'assembly où UnityContainerAdapter est défini connaît la bibliothèque Unity.Comment cacher la vraie bibliothèque de conteneurs IoC?
J'ai une fuite dans ma pensée d'isolement. Unity recherche des attributs sur les membres d'un type pour savoir où injecter les dépendances. La plupart des bibliothèques de l'IoC que j'ai vues soutiennent également cela. Le problème que j'ai est que je veux utiliser cette fonctionnalité mais je ne veux pas que mes classes aient une dépendance sur l'attribut spécifique d'Unity.
Avez-vous des suggestions sur la façon de résoudre ce problème?
Idéalement, je créerais mon propre attribut [Dependency] et l'utiliserais dans mon code. Mais je devrais dire au vrai conteneur la recherche de mon attribut au lieu du sien.
Est-ce ainsi que vous pouvez utiliser un autre cadre IoC pour injecter votre cadre de choix IoC? J'ai mal à la tête! –
@David M: J'aime réduire la dépendance aux bibliothèques externes. Toutes les bibliothèques de l'IoC se ressemblent sur le papier, il est donc difficile d'en choisir une sans l'essayer pour de vrai. Je pourrais très bien trouver une limitation majeure avec Unity. En isolant mon autre code de la bibliothèque, il sera plus facile de le changer si nécessaire. – Sylvain