使用Typhoon将属性注入未被Typhoon Assembly初始化的类中

时间:2017-08-09 02:54:49

标签: ios cocoapods typhoon

我正在开发一个私人pod,目前我在使用Typhoon将属性注入bootstrap类时遇到了一些困难。

我的课程:

public class MyLibrary: NSObject {
    var dependency: MyDependencyProtocol?
}

我的集会:

open class MyLibraryAssembly: TyphoonAssembly {

    open dynamic func lib() -> Any
    {
        return TyphoonDefinition.withClass(MyLibrary.self) { (definition) in
            definition?.injectProperty(#selector(getter: MyLibrary.dependency), with: self.dependency())
            definition?.scope = .singleton
        }
    }
}

但是,消费者应用程序将使用 var lib = MyLibrary()来初始化对象,而不是使用依赖注入。在调用init时,如何将依赖项注入MyLibrary类?

1 个答案:

答案 0 :(得分:1)

最好在MyLibrary类中定义一个类方法,以返回MyLibrary类的构建实例。这种方法会:

  • Bootstrap Typhoon
  • 向Typhoon询问建筑物和放大器已配置的库实例
  • 将其返回给方法调用者

示例:MyLibrary.instance()MyLibrary.instanceWithConfig(someConfig)

  • 这些方法的来电者不关心如何在幕后建立对象 - 只需相信一个内置和放置的对象。返回已配置的实例。
  • 仍然是使用公共构造函数手动组装库实例的选项。