我的应用程序使用Unity注入依赖项,问题是其中一个参数有参数。
类定义:
public ValidationEngine(params IRuleProvider[] providers)我想传递一个IRuleProvider的实例作为这个,但是要统一:
var validationEngine = new ValidationEngine(providers: new RuleProvider(HostingEnvironment.MapPath("~/Rules/Rates/upload/rules.xml")))我已经尝试了下面的代码:
 container.RegisterType<IValidationEngine, ValidationEngine>(ValidationConstants.RatesDownloadValidator,
                                    new InjectionConstructor(typeof(ValidationEngine), new ResolvedArrayParameter<IRuleProvider>(new ResolvedParameter<RuleProvider>())));但是我不能添加将在unity实例化RuleProvider类时使用的参数。
我是否需要创建自己的自定义ResolvedParameter -或者-有一种方法可以将参数传递给构造函数参数?
谢谢
发布于 2016-05-20 10:41:32
好的,这是一个解决方案。重要的一点是,Unity将只解析命名注册上的数组,所以我在容器上注册IRuleProvider时提供了名称"rulesprovider“:
var container = new UnityContainer();
container.RegisterType<IRuleProvider, RuleProvider>(
            "rulesprovider",
            new InjectionConstructor(HostingEnvironment.MapPath("~/Rules/Rates/upload/rules.xml")));
container.RegisterType<IValidationEngine, ValidationEngine>(
            new InjectionConstructor(
            new ResolvedParameter<IRuleProvider[]>()));
var validationEngine = container.Resolve<IValidationEngine>();https://stackoverflow.com/questions/37336767
复制相似问题