解析c#Unity构造函数时出错

时间:2014-03-05 16:46:06

标签: c# interface constructor unity-container

问题背景:

我目前正在配置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)

我理解这一点,我确实传递了另外两个参数,但我相信我已经注册了IPromoManagerIConnectionManager这些将被解析并自动注入{{1构造函数?

有谁能告诉我这里的逻辑错在哪里,以及我可以做些什么来解决它?

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