私は IoC を初めて使用し、現在のプロジェクトで Autofac を使用しています。
次の2つのクラスがあります。
public class UserService : IUserService
{
private readonly IUserRepository _repo;
private readonly IMailService _mailService;
public UserService(IUserRepository repo, IMailService mailService)
{
_repo = repo;
_mailService = mailService;
}
}
public class MailService : IMailService
{
private readonly IMailRepository _repo;
private readonly IUserService _userService;
public MailService(IMailRepository repo, IUserService userService)
{
_repo = repo;
_userService = userService;
}
}
最初は、私の UserService クラスは MailService クラスのインスタンスを必要としませんでしたが、現在は必要です。これを UserService コンストラクターに導入してから、この循環依存エラーが発生しました。初心者なので、どうすればよいかわかりません。これを解決します。
これは、私のクラスが現在 Autofac に登録されている方法です。
var builder = new ContainerBuilder();
// controllers
builder.RegisterControllers(Assembly.GetAssembly(typeof(UsersController)));
// register other classes
builder.RegisterType<UserRepository>().As<IUserRepository>();
builder.RegisterType<MailRepository>().As<IMailRepository>();
builder.RegisterType<UserService>().As<IUserService>();
builder.RegisterType<MailService>().As<IMailService>();