2016-05-16 20 views
1

注入性基类我有类结构,如:如何利用台风

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。属性总是零。怎么了?

+1

尝试在networkClient()definion.parent = baseNetworkClient() –

+0

https://github.com/appsquickly/Typhoon/wiki/Types-of-Injections#abstract-and-base-defin itions –

+0

谢谢你们!修正了。 – AlexEdunov

回答

2

摘要和基本定义在项目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 
    } 
}