2016-05-16 5 views
1

I Klassenstruktur haben, wie:Wie Eigenschaft Basisklasse injizieren Typhoon mit

class BaseNetworkClient: NSObject { 
    var defaultParametersBuilder: DefaultParametersBuilder! 
} 

class NetworkClient: BaseNetworkClient { 

} 

class DefaultParametersBuilder: NSObject { 

} 

Und Typhoon Assembly

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 injizieren zu keiner Klasse, sondern Network erbt von ihm. Das Problem ist, dass ich BaseNetworkClient keine Eigenschaft hinzufügen kann. Eigenschaften sind immer Null. Was ist los mit dir?

+1

Versuchen Sie es mit networkClient() definion.parent = baseNetworkClient() –

+0

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

+0

Danke Jungs! Das wurde behoben. – AlexEdunov

Antwort

2

Zusammenfassung und Base-Definitionen werden im Projekt-Wiki beschrieben: https://github.com/appsquickly/Typhoon/wiki/Types-of-Injections#abstract-and-base-definitions

eine Injektion Sie übergeordnete Definition festlegen müssen erben:

definition.parent = self.baseNetworkClient() 

Versammlung wird wie folgt ändern:

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 
    } 
}