依存性注入を使用するプロジェクトで、循環依存性に問題があります。周りを見回すと、再構築 (私もその一部を行いました) 以外に、それを回避する唯一の方法は、プロパティ インジェクションを使用することのようです。これを試してみましたが、役に立たないようですが、理由はわかりません。これが問題を引き起こしているパスです。
Activation path:
6) Injection of dependency IUserRepository into property UserRepository of type ModelFactory{UserRole}
5) Injection of dependency IUserRoleFactory into parameter userRoleFactory of constructor of type UserRoleService
4) Injection of dependency IUserRoleService into property UserRoleService of type InternalUserBehavior
3) Injection of dependency IInternalUserBehavior into parameter internalUserBehavior of constructor of type UserRepository
2) Injection of dependency IUserRepository into parameter userRepository of constructor of type HomeController
1) Request for HomeController
現在、プロパティ注入を使用していることを知っているようで、すべての動作とファクトリが同じスコープ (今はスコープを呼び出しますが、スレッド スコープも試しました) と UserRepository にあります。
プロセスについての私の理解では、それは 4 になり、実際にオブジェクトを作成できるようになるはずです。この時点で、HomeController、IUserRepository、および IInternalUserBehavior への参照が含まれているはずです。その後、5 で動作し、完成した IUserRoleService を InternalUserBehavior に挿入します。最後に、以前にインスタンス化されたユーザー リポジトリを (同じスコープ内にあるため) ModelFactory のプロパティに挿入する必要があります。
したがって、私の質問の短いバージョンは次のようになると思います:プロパティ注入が循環依存の問題を解決しないのはなぜですか?