Unity拦截和带循环引用的类

时间:2013-05-26 00:41:12

标签: dependency-injection unity-container aop unity-interception policy-injection

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

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

问题是我正在获得Stack Overflow,因为策略拦截一遍又一遍地遍历同一个对象。有没有办法让它做引用计数?

我已经确定构造函数不是循环依赖的,但我仍然需要使用Policy Injection来反复停止对相同对象的递归。

1 个答案:

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