问题背景:
我目前正在配置Unity容器,并且在设置类的构造函数时遇到问题。
有问题的类的构造函数如图所示设置。它接收3个字符串参数,然后是我在容器中设置的2个对象。
public VersionControlFacade(string serverPath, string username, string password, IConnectionManager connectionManager, IPromoManager promoManager)
上述类的已配置Unity容器如下所示:
container.RegisterType<IPromoManager, promotionManager>();
container.RegisterType<IConnectionManager, connectionManager>();
container.RegisterType<ITfsVersionControlFacade, TfsVersionControlFacade>(new InjectionConstructor(connectionString, username, password));
错误:
目前,在尝试解析UnityContainer
对象时,会抛出以下异常:
类型VersionControlFacade没有带参数的构造函数(String,String,String)
我理解这一点,我确实传递了另外两个参数,但我相信我已经注册了IPromoManager
和IConnectionManager
这些将被解析并自动注入{{1构造函数?
有谁能告诉我这里的逻辑错在哪里,以及我可以做些什么来解决它?
答案 0 :(得分:2)
我相信你需要:
container.RegisterType<ITfsVersionControlFacade, TfsVersionControlFacade>(new InjectionConstructor(connectionString, username, password, typeof(IConnectionManager), typeof(IPromoManager)));
见
Unity InjectionConstructor for multiparam constructor overriding only single one