У меня есть решение C #, которое включает в себя несколько проектов WebAPI. Один из этих проектов, назовем его Project A, уже успешно использует SimpleInjector. Я пытаюсь добавить SimpleInjector в другой из этих проектов WebAPI, проект B, но столкнулся с проблемой.
Я пытаюсь создать второй контейнер в проекте B, как я это делал в проекте A, но когда я делаю это и пытаюсь построить решение, в Project A, который создается после Project B, возникает исключение в метод container.Verify()
. Он говорит мне, что интерфейс, расположенный в проекте B (IUserService
), не зарегистрирован должным образом в проекте A, но проект A не использует этот интерфейс.
В проекте B на Global.asax.cs у меня есть эта конфигурация:
/* Dependency Injection */
var container = new Container();
container.Options.DefaultScopedLifestyle = new AsyncScopedLifestyle();
container.Register<IUserService>(() => { return new UserService(); }, Lifestyle.Scoped);
container.RegisterWebApiControllers(GlobalConfiguration.Configuration);
container.Verify();
GlobalConfiguration.Configuration.DependencyResolver = new SimpleInjectorWebApiDependencyResolver(container);
В проекте A у меня есть эта конфигурация:
/* Dependency Injection */
var container = new Container();
container.Options.DefaultScopedLifestyle = new AsyncScopedLifestyle();
container.Register<ILog>(() => { return LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); }, Lifestyle.Scoped);
container.Register<IFundRepository>(() => { return new IporangaFundRepository(dbConnectorMiddle); }, Lifestyle.Scoped);
container.Register<ITradeRepository>(() => { return new IporangaTradeRepository(dbConnectorMiddle, middleReadClient); }, Lifestyle.Scoped);
container.Register<ITradeManager, TradeManager>(Lifestyle.Scoped);
container.Register<ITradeService>(() => new TradeService(container.GetInstance<ITradeManager>()),Lifestyle.Scoped);
container.Register<ISimulationService>(() => new SimulationService(container.GetInstance<ITradeService>()), Lifestyle.Scoped);
container.Register<IBookerService>(() => new BookerService(container.GetInstance<ITradeService>(), container.GetInstance<ISimulationService>()), Lifestyle.Scoped);
container.RegisterWebApiControllers(GlobalConfiguration.Configuration);
container.Verify();
GlobalConfiguration.Configuration.DependencyResolver = new SimpleInjectorWebApiDependencyResolver(container);
Сообщение об ошибке:
System.InvalidOperationException: 'Конфигурация недействительна.
Не удалось создать экземпляр для типа UserController. Конструктор
типа UserController содержит параметр с именем 'userService'
и введите IUserService, который не зарегистрирован. Пожалуйста убедитесь
IUserService зарегистрирован или измените конструктор
UserController.