c# - Unity 容器调用非默认 ctor

标签 c# unity-container

我打电话

mActionLogManager = container.Resolve<IActionLogManager>();

并且在调试时我看到它仅通过非默认构造函数运行

  public ActionLogManager(IUnityContainer container)
        {
            Init(container);
        }

难道 unity 总是调用无参数 ctor 吗?

我尝试编写和删除无参数构造函数。

  • 存在的时候没有经过,

  • 并且在丢失时没有抛出异常。

更新: 如果是这样,它如何知道要填充构造函数的参数?

最佳答案

这是 Unity 的默认行为。它尝试使用具有最多参数的构造函数来解析实例。如果要指示 Unity 使用默认构造函数,则需要按如下方式注册类型:

container.Register<IActionLogManager,MyActionLogManager>(new InjectionConstructor());

关于c# - Unity 容器调用非默认 ctor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10810874/

相关文章:

c# - 更新在 Unity 容器中注册的实例

c# - 解析类型时Unity执行方法

c# - 统一: Will get a StackOverflowException if I try to get a singleton that is registered in multiple mappings

c# - 如何在 VS 2017 中创建具有最小依赖性的 .NET Standard NuGet 包?

c# - 同一个 HttpVerb 的多个操作

c# - Unity c# 绕过监听器效果在 IOS 设备上不起作用

c# - 多重继承,如何避免手动复制粘贴继承和维护?

c# - 如何以编程方式在 IIS 7 中获取站点列表和虚拟目录?

wpf - 哪个更适合与 Prism4、Unity 或 MEF 一起用作依赖注入(inject)容器?

asp.net-mvc - Quartz.Net,使用 Unity 进行 DI 时,Unity.Mvc3.dll 中发生了类型 'System.NullReferenceException' 的第一次机会异常