0

不幸的是,一些库只有静态方法。是否可以让 Swinject 注册一个类型以返回一个类型而不是一个类型的实例?很难将仅用于测试的静态库排除在外。

4

1 回答 1

0

不幸的是,在 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) }
于 2019-01-23T08:29:35.857 回答