我打电话
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/