Unity InjectionConstructor pour un constructeur multiparam

J’ai une classe avec constructeur comme ceci:

public class Bar { public Bar(IFoo foo, IFoo2 foo2, IFoo3 foo3, IFooN fooN, Ssortingng text) { } } 

Je veux enregistrer Bar in Unity et fournir une valeur pour le texte:

 unity.RegisterType(new InjectionConstructor("123")); 

Cependant, je ne peux pas le faire car il n’y a pas de constructeur de paramètre unique pour Bar.

Est-il possible de fournir une valeur pour le texte sans spécifier tous les autres parameters comme ResolvedParameter etc. Je n’aime vraiment pas ça, beaucoup de code, et chaque fois que je change un constructeur de Bar je dois append un autre ResolvedParameter

Unity ne peut pas le faire hors de la boîte. Le mieux que vous puissiez faire est de:

 container.RegisterType( new InjectionConstructor( typeof(IFoo), typeof(IFoo2), typeof(IFoo3), typeof(IFooN), "123")); 

Ou vous pouvez utiliser le SmartConstructor fourni par le projet TecX . Cet article de blog décrit certains antécédents.

L’inscription ressemblerait à ceci:

 container.RegisterType(new SmartConstructor("text", "123")); 
 public void Register(params object[] constructorParams) where TFrom : class { _container.RegisterType(new InjectionConstructor(constructorParams)); }