我有一个核心库,可以通过工厂访问一堆服务。它看起来像这样:
MyServiceFactory.Create<T>(serviceKey);
在其他库中,我正在尝试引用此工厂,并传入ServiceKey。我正在努力如何将ServiceKey设置为ParameterOverride并让它在InjectionFactory中被识别。在执行标准RegisterType()时,ParameterOverride会神奇地注入图中具有该参数的每个类。
Unity设置
container.RegisterType<IOrderService>(new InjectionFactory(f=>{
return MyServiceFactory.Create<IOrderService>(REFERENCE_TO_PARAMETEROVERRIDE_FOR_SERVICEKEY);
}));
Unity Resolve
public static T Resolve<T>()
{
var parameterOverride = new ParameterOverride("serviceKey", new TestingServiceKey());
return Resolve<T>(parameterOverride);
}