0

我的富域模型有一些循环引用,这是有意的。

我还在编写自己的 ORM 以获得更多控制,并检测对属性所做的更改,我使用 Unity 拦截对设置器的任何调用并触发属性更改通知(类似于 EF 的工作方式)。

问题是我得到了堆栈溢出,因为策略拦截一遍又一遍地遍历同一个对象。有没有办法让它做引用计数?

我已经确保构造函数不是循环依赖的,但我仍然需要策略注入来停止重复递归相同的对象。

4

1 回答 1

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 的函数

于 2013-05-30T08:54:00.450 回答