首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Typhoon将属性注入基类

如何使用Typhoon将属性注入基类
EN

Stack Overflow用户
提问于 2016-05-16 15:53:49
回答 1查看 403关注 0票数 1

我有这样的类结构:

代码语言:javascript
复制
class BaseNetworkClient: NSObject {
    var defaultParametersBuilder: DefaultParametersBuilder!
}

class NetworkClient: BaseNetworkClient {

}

class DefaultParametersBuilder: NSObject {

}

和台风组件

代码语言:javascript
复制
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注入任何属性。属性始终为nil。怎么了?

EN

回答 1

Stack Overflow用户

发布于 2016-05-16 18:05:09

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

要继承注入,您需要为定义设置parent:

代码语言:javascript
复制
definition.parent = self.baseNetworkClient()

程序集将更改如下:

代码语言:javascript
复制
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
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37249141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档