Можно ли регистрировать только статические протоколы? - PullRequest
0 голосов
/ 22 января 2019

К сожалению, в некоторых библиотеках есть только статические методы.Можно ли заставить Swinject регистрировать тип, чтобы он возвращал тип вместо экземпляра типа?Сложно заглушить статичные библиотеки для тестирования.

1 Ответ

0 голосов
/ 23 января 2019

В текущем состоянии Swinject это, к сожалению, невозможно.Одним из способов обойти это было бы создание провайдера нестандартного типа:

protocol LibraryProtocol {}
class Library: LibraryProtocol {}

class LibraryProvider {
    let library: LibraryProtocol.Type
    init(_ library: LibraryProtocol.Type) { self.library = library }
}

container.register(LibraryProvider.self) { _ in LibraryProvider(Library.self) }
...