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 に答える