unity type register lifetimemanager ioc injection dependency containercontrolledlifetimemanager container c# unity-container

c# - type - Unity InjectionConstructor para constructor multiparam anulando solo uno



unity containercontrolledlifetimemanager (2)

La unidad no puede hacer esto de la caja. Lo mejor que puedes hacer es:

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

O puede usar el SmartConstructor proporcionado por el proyecto TecX . Esta publicación de blog describe algunos antecedentes.

El registro sería así:

container.RegisterType<Bar>(new SmartConstructor("text", "123"));

Tengo una clase con un constructor como este:

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

Quiero registrar Bar en Unity y proporcionar un valor para el texto:

unity.RegisterType<Bar, Bar>(new InjectionConstructor("123"));

Sin embargo, no puedo hacer esto porque no hay un único constructor de parámetros para Bar.

¿Hay alguna manera de proporcionar un valor para el texto sin especificar todos los demás parámetros como ResolvedParameter<IFooN> etc. Realmente no me gusta, hay mucho código, y cada vez que cambio un constructor de Bar, necesito agregar otro ResolvedParameter


public void Register<TFrom>(params object[] constructorParams) where TFrom : class { _container.RegisterType<TFrom>(new InjectionConstructor(constructorParams)); }