How resolve a dependency with unity passing argume

2019-08-09 08:45发布

问题:

Possible Duplicate:
Can I pass constructor parameters to Unity’s Resolve() method?
Constructor Injection in C#/Unity?

It is possible to resolve a dependency with unity passing arguments in the constructor of the service to resolve ?

If it is how I can do it ?

回答1:

Create an InjectionConstructor and pass that to RegisterType():

var unityContainer = new UnityContainer();

ISnuh snuh = new Snuh();
InjectionConstructor injectionConstructor = new InjectionConstructor(snuh);

unityContainer.RegisterType<ICalculator, SimpleCalculator>(injectionConstructor);

If you have to do it only when you resolve the type, that's when ResolverOverride[] would be used:

public static T Resolve<T>(this IUnityContainer container, params ResolverOverride[] overrides);

Per MSDN:

Use ParameterOverride to override the specified constructor parameter or parameters.