我的富域模型有一些循环引用,这是故意的。
我也在编写自己的ORM以获得更多控制权,并检测对属性所做的更改我使用Unity来拦截对setter的任何调用并触发属性更改通知(类似于EF的工作方式)。
问题是我正在获得Stack Overflow,因为策略拦截一遍又一遍地遍历同一个对象。有没有办法让它做引用计数?
我已经确定构造函数不是循环依赖的,但我仍然需要使用Policy Injection来反复停止对相同对象的递归。
答案 0 :(得分:0)
当你有一个循环引用时,你可以注入函数来构建它们,而不是注入对象:
Container.RegisterType<IMyService, ImplService>(... );
public class MyClass {
private Func<IMyService> _serviceProvider;
public MyClass(Func<IMyService> serviceProvider) { _serviceProvider = serviceProvider }
public void DoStuff() {
_serviceProvider().DoSomething();
}
}
Unity将注入一个返回IMyService的函数