この質問の回答に基づいて: ninject を使用した循環依存とこの質問: Ninject: 解決される子に親インスタンスを与える両方とも、スコープをデフォルトの Transient Scope にはなりません。だから私はそれをやってみました、私はお互いを必要とする aUserService
と aを持っGroupService
ています (そして、クラスを変更したり、3 番目のクラスを使用したりしないでください!)。EntityServiceFactory
次のように ninject を使用するジェネリックがあります。
public static class EntityServiceFactory
{
public static TServiceClass GetService<TServiceClass>()
where TServiceClass : class
{
IKernel kernel = new StandardKernel();
return kernel.Get<TServiceClass>();
}
}
そして私のサービス:
public class GroupService : EntityService<GroupRepository, Group, DbContext>
{
public UserService _userService { private get; set; }
public GroupService(GroupRepository repository, UserService userService) : base(repository)
{
userService._groupService = this;
}
public class UserService : EntityService<UserRepository, User, DbContext>
{
public GroupService _groupService { private get; set; }
public UserService(UserRepository repository, GroupService groupService)
: base(repository)
{
groupService._userService = this;
}
次に、これらの質問に対する回答の指示に従って、次を my に追加しますEntityServiceFactory
。
kernel.Bind<GroupService>().ToSelf().InCallScope();
kernel.Bind<UserService>().ToSelf().InCallScope();
しかし、私はまだエラーが発生します:
2 つのサービスのコンストラクター間で循環依存関係が検出されました。
双方向のプロパティ注入を正しく行っていますか? これを解決するにはどうすればよいですか?