繁体   English   中英

如何使用台风将属性注入基类

[英]How to inject property to base class using Typhoon

我有这样的类结构:

class BaseNetworkClient: NSObject {
    var defaultParametersBuilder: DefaultParametersBuilder!
}

class NetworkClient: BaseNetworkClient {

}

class DefaultParametersBuilder: NSObject {

}

和台风大会

class CoreComponentsAssembly: TyphoonAssembly {
    dynamic func baseNetworkClient() -> AnyObject {
        return TyphoonDefinition.withClass(BaseNetworkClient.self) {
            (definition) in
            definition.scope = .ObjectGraph
            definition.injectProperty(#selector(self.defaultParametersBuilder), with: self.defaultParametersBuilder())
        }
    }

    dynamic func networkClient() -> AnyObject {
        return TyphoonDefinition.withClass(NetworkClient.self) {
            (definition) in
            definition.scope = .ObjectGraph
        }
    }

    dynamic func defaultParametersBuilder() -> AnyObject {
        return TyphoonDefinition.withClass(DefaultParametersBuilder.self) {
            (definition) in
            definition.scope = .ObjectGraph
        }
    }
}

BaseNetworkClient不会注入任何类,但是NetworkClient会继承它。 问题是我无法将任何属性注入BaseNetworkClient。 属性始终为零。 怎么了?

项目Wiki中描述了抽象和基本定义: https : //github.com/appsquickly/Typhoon/wiki/Types-of-Injections#abstract-and-base-definitions

要继承注入,您需要为定义设置父对象:

definition.parent = self.baseNetworkClient()

组装将更改如下:

dynamic func baseNetworkClient() -> AnyObject {
    return TyphoonDefinition.withClass(BaseNetworkClient.self) {
        (definition) in
        definition.injectProperty(#selector(self.defaultParametersBuilder), with: self.defaultParametersBuilder())
    }
}

dynamic func networkClient() -> AnyObject {
    return TyphoonDefinition.withClass(NetworkClient.self) {
        (definition) in
        definition.parent = self.baseNetworkClient()
        definition.scope = .ObjectGraph
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM