Est-il possible de faire en sorte que l'unité essaie tous les constructeurs définis en commençant par celui qui a le plus d'arguments jusqu'au plus petit (le constructeur par défaut)?Unité et constructeurs
Modifier
Ce que je veux dire:
foreach (var constructor in concrete.GetConstructorsOrderByParameterCount())
{
if(CanFulfilDependencies(constructor))
{
UseConstructor(constructor);
break;
}
}
Je ne veux pas l'unité d'essayer seul le constructeur avec la plupart des paramètres. Je veux qu'il continue à essayer jusqu'à ce qu'il trouve un constructeur approprié. Si Unity ne fournit pas ce comportement par défaut, est-il possible de créer une extension ou quelque chose pour pouvoir le faire?
Edit 2
Je suis une classe avec deux constructeurs:
public class MyConcrete : ISomeInterface
{
public MyConcrete (IDepend1 dep, IDepend2 dep2)
{}
public MyConcrete(IDepend1 dep)
{}
}
La classe existe dans une bibliothèque qui est utilisée par plusieurs projets. Dans ce projet, je veux utiliser deuxième constructeur. Mais l'unité s'arrête car elle ne peut pas remplir les dépendances du premier constructeur. Et je ne veux pas vouloir changer la classe depuis le premier constructeur est utilisé par DI dans d'autres projets.
D'où la nécessité pour Unity d'essayer de résoudre tous les constructeurs.
Que voulez-vous dire par "essayer"? –
Encore une fois ... vous dites "approprié" ... s'il vous plaît fournir un code où ce problème fait surface, car il peut rendre les choses plus claires. Les constructeurs ne devraient pas dépendre en général des entités externes en dehors de ce qui est passé, ne devraient pas jeter des exceptions, etc ... Edited ma réponse cependant ... –
a mis à jour la question. – jgauffin