Donc, dire que j'ai le type qui prend des paramètres dans le constructeur, comme celui-ci:IoC vs variable globale dans la bibliothèque
public MyType(IComObject wrapper,string table) {}
maintenant IComObject est une enveloppe sur deux objets COM différents. Tous (90%) de mes types doivent utiliser IComObject, donc en mode DI (pour permettre les tests) je passe IComObject dans tous les types qui en ont besoin.
Le problème principal est que lorsque quelqu'un utilise ma librairie COM wrapper qui doit passer une instance d'IComObject dans tout ce qu'ils font, cela rend le code un peu difficile à gérer et à maintenir.
Je me demandais si je devrais utiliser un conteneur IoC ou une variable globale que l'utilisateur peut définir de sorte qu'ils n'aient pas à passer l'instance IComOject. Exemple:
public MyType(string table)
: this(IoC.Resolve<IComObject>,table) {}
ou
public MyType(string table)
: this(StaticClass.ComInstance,table) {}
Pour que l'utilisateur peut faire:
//Set up Ioc container
COMObject object = new COMObject();
Ioc.Register(typeof(IComObject),object);
MyType mytype = new MyType("test.tab");
ou
COMObject object = new COMObject();
StaticClass.ComInstance = object;
MyType mytype = new MyType("test.tab");
Que pensez-vous que je devrais faire dans cette situation ?
Je m'inquiétais juste pour que l'utilisateur ait à se soucier de la configuration du conteneur IoC. –