Kon*_*rin 6 dependency-injection circular-dependency unity-container
这个问题是关于Unity Container的,但我想它适用于任何依赖容器.
我有两个循环依赖的类:
class FirstClass
{
[Dependency]
public SecondClass Second { get; set; }
}
class SecondClass
{
public readonly FirstClass First;
public SecondClass(FirstClass first)
{
First = first;
}
}
Run Code Online (Sandbox Code Playgroud)
从技术上讲,如果将它们视为单例,则可以实例化并正确地为它们注入依赖关系:
var firstObj = new FirstClass();
var secondObj = new SecondClass(firstObj);
firstObj.Second = secondObj;
Run Code Online (Sandbox Code Playgroud)
当我尝试对Unity做同样的事情时,我得到StackOverflowException:
var container = new UnityContainer();
container.RegisterType<FirstClass>(new ContainerControlledLifetimeManager());
container.RegisterType<SecondClass>(new ContainerControlledLifetimeManager());
var first = container.Resolve<FirstClass>(); // StackOverflowException here!
var second = container.Resolve<SecondClass>(); // StackOverflowException here too!
Run Code Online (Sandbox Code Playgroud)
我理解Unity试图保护我不使用部分初始化的对象,但我希望将此保护作为一种选择,而不是义务.
问题:目前的行为是否令人遗憾?
| 归档时间: |
|
| 查看次数: |
1589 次 |
| 最近记录: |