简体   繁体   English

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

[英]Using Typhoon, create instance of a subclass of a class which has dependencies

I am using Typhoon for dependencies injection in Swift for iOS. 我正在使用Typhoon在iOS的Swift中进行依赖项注入。

I have created an assembly to inject dependencies in a class called BaseRequest like this: 我创建了一个程序集,将依赖项注入一个名为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())

            }
        }
    }
}

Now, I am trying to create a subclass of BaseRequest with a factory method like this: 现在,我正在尝试使用如下工厂方法创建BaseRequest的子类:

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

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

I need to be able to create an instance of DownloadLibrariesRequest and call the NetworkAssembly for BaseRequest since I need to use another init in the subclasses. 我需要能够创建DownloadLibrariesRequest的实例并为BaseRequest调用NetworkAssembly ,因为我需要在子类中使用另一个init。 Also, I need to mention that I will have around 50 such subclasses, so creating assemblies for all of them doesn't sound too great at the moment. 另外,我需要提及的是,我将有大约50个此类子类,因此为所有这些子类创建程序集在目前看来还不太好。

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

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

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