使用Typhoon,创建具有依赖项的类的子类的实例

时间:2015-08-21 12:13:40

标签: ios swift dependency-injection typhoon

我正在使用Typhoon在Swift for iOS中注入依赖项。

我创建了一个程序集,在一个名为BaseRequest的类中注入依赖项,如下所示:

public class NetworkAssembly: TyphoonAssembly {
    public dynamic func baseRequest() -> AnyObject {
        return TyphoonDefinition.withClass(BaseRequest.self){
            (definition) in
            definition.useInitializer("initWithRetryCount:userUmbrella:networkQueueManager:"){
                (initializer) in

                initializer.injectParameterWith((TyphoonConfig("network.request.retry.count") as! NSNumber).integerValue)
                initializer.injectParameterWith(self.coreComponents.userUmbrella())
                initializer.injectParameterWith(self.networkQueueManager())

            }
        }
    }
}

现在,我正在尝试使用这样的工厂方法创建BaseRequest的子类:

class DownloadLibrariesRequest: BaseRequest {
    var libraries:Array<String> = []

    class func downloadLibraries(libraries:Array<String>)->Void{
        let request: DownloadLibrariesRequest = DownloadLibrariesRequest(.....)
        request.libraries = libraries
    }
}

我需要能够创建 DownloadLibrariesRequest 的实例,并为 BaseRequest 调用 NetworkAssembly ,因为我需要在其中使用另一个init子类。 另外,我需要提一下,我将有大约50个这样的子类,因此为所有这些子类创建程序集目前听起来并不太好。

1 个答案:

答案 0 :(得分:0)

要创建具有共享配置的定义,为避免重复,请使用parent功能。