配置无效。服务类型直接或间接取决于它自身

时间:2018-04-23 11:38:00

标签: asp.net-mvc dependency-injection circular-dependency simple-injector

错误:

  

配置无效。为类型IUserService创建实例失败。配置无效。 PatientService类型直接或间接取决于其自身。循环图包含以下类型:PatientService - > ConfigService - > PatientService。

代码:

var container = new Container();
container.Register<IUserService, UserService>();
container.Register<IPatientService, PatientService>();
container.Register<IConfigService, ConfigService>();

container.RegisterMvcControllers(Assembly.GetExecutingAssembly());
container.Verify();

PatientService:

public class PatientService : IPatientService
    {
        private readonly IPatientRepository _patientRepository;
        private readonly ConfigService _configService;
        private readonly UserService _userService;

        public PatientService(
            PatientRepository patientRepository, 
            ConfigService configService, 
            UserService userService)
        {
            _patientRepository = patientRepository;
            _configService = configService;
            _userService = userService;
        }
}

的ConfigService:

public class ConfigService : IConfigService
    {
        private readonly PatientService _patientService;
        private readonly IPatientRepository _patientRepository;

        public ConfigService(
            PatientService patientService, PatientRepository patientRepository)
        {
            _patientService = patientService;
            _patientRepository = patientRepository;
        }
}
  

我必须在ConfigService和ConfigService中使用PatientService对象   PatientService中的对象。有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:3)

  

配置无效。为类型创建实例   IUserService失败。配置无效。类型   PatientService直接或间接取决于自身。该   循环图包含以下类型:PatientService - &gt;   ConfigService - &gt; PatientService。

'show_option_all' => 'All',使用PatientService的引用。 ConfigService使用ConfigService

的引用

您需要在源代码中的某处删除PatientService。因为你在这里添加了一个循环依赖,这不是一个好习惯,所以你需要检查你的设计。