Swinject: сбой разрешения при использовании нескольких модулей (проектов) в рабочей области - PullRequest
0 голосов
/ 22 сентября 2019

Я пытаюсь настроить DI для многомодульного рабочего пространства с помощью Swinject.У меня есть один ParentProject, где я встраиваю бинарный фреймворк, построенный из ChildProject (поэтому ParentProject включает в себя весь открытый код из ChildProject).

Мой подход состоит в том, чтобы создать одну сборку для каждого модуля и собрать их вместе в ParentProject.Ошибки, которые я получаю, очень странны для меня, возьмите одну за NSPersistentContainer:

Swinject: Resolution failed. Expected registration: { Service: NSPersistentContainer, Factory: Resolver -> NSPersistentContainer } Available registrations: { Service: NSPersistentContainer, Factory: Resolver -> NSPersistentContainer, ObjectScope: container }

Пример сборки из ParentProject:

public class ParentProjectAssembly: Assembly { ... public func assemble(container: Container) { ... container.register(NSPersistentContainer.self) { _ in return self.persistentContainer }.inObjectScope(.container) ... } }

На самом деле не имеет значения, перенесу ли я этот регистрационный код в ChildProjectAssembly или у меня будет эта регистрация в обоих, ошибка всегда одна и та же.Мой ассемблер просто Assembler([ParentProjectAssembly(), ChildProjectAssembly()] в AppDelegate ParentProject (на данный момент).Кажется, что все работает нормально, метод assemble(container:) имеет один и тот же контейнер для всех сборок, некоторые инъекции работают, но другие имеют эту ошибку, предлагая, чтобы я зарегистрировал службу без указания objectScope вообще?Это невозможно

Справка

...