【问题标题】:Error resolving c# Unity constructor解析 c# Unity 构造函数时出错
【发布时间】:2014-03-05 16:46:05
【问题描述】:

问题背景:

我目前正在配置 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,这些将被解析并自动注入到 VersionControlFacade 构造函数中?

谁能告诉我这里的逻辑哪里错了,我能做些什么来解决它?

【问题讨论】:

  • 您的另一个问题(与这个问题非常相似)stackoverflow.com/questions/21675845/… 表明您可能有命名问题?即使您感兴趣的构造函数是VersionControlFacade,您也实现了VersionControlService

标签: c# interface constructor unity-container


【解决方案1】:

我相信你需要:

container.RegisterType<ITfsVersionControlFacade, TfsVersionControlFacade>(new InjectionConstructor(connectionString, username, password, typeof(IConnectionManager), typeof(IPromoManager)));

Unity InjectionConstructor for multiparam constructor overriding only single one

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-27
    相关资源
    最近更新 更多