You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1692 lines
126 KiB
1692 lines
126 KiB
//
|
|
// Sources/AutoRegistration.swift
|
|
// SwinjectAutoregistration
|
|
//
|
|
// Generated by Swinject AutoRegistration generator.
|
|
// Copyright © 2017 Swinject Contributors. All rights reserved.
|
|
//
|
|
|
|
|
|
import Swinject
|
|
|
|
|
|
let maxDependencies = 20
|
|
let maxArguments = 3
|
|
|
|
|
|
public extension Container {
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service>(_ service: Service.Type, name: String? = nil, initializer: @escaping (()) -> Service) -> ServiceEntry<Service> {
|
|
return self.register(service.self, name: name, factory: { res in
|
|
initializer(())
|
|
} as (Resolver) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A>(_ service: Service.Type, name: String? = nil, initializer: @escaping (A) -> Service) -> ServiceEntry<Service> {
|
|
return self.register(service.self, name: name, factory: { res in
|
|
let a: A? = res.resolve()
|
|
checkResolved(initializer: initializer, services: a)
|
|
return initializer(a!)
|
|
|
|
} as (Resolver) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, argument: Arg1.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- argument: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 1 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, Arg1>(_ service: Service.Type, name: String? = nil, argument arg1: Arg1.Type, initializer: @escaping (Arg1) -> Service) -> ServiceEntry<Service> {
|
|
return self.register(service.self, name: name, factory: { res, arg1 in
|
|
let arg1: Arg1? = arg1
|
|
checkResolved(initializer: initializer, services: arg1)
|
|
return initializer(arg1!)
|
|
|
|
} as (Resolver, Arg1) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B>(_ service: Service.Type, name: String? = nil, initializer: @escaping ((A, B)) -> Service) -> ServiceEntry<Service> {
|
|
return self.register(service.self, name: name, factory: { res in
|
|
let a: A? = res.resolve(); let b: B? = res.resolve()
|
|
checkResolved(initializer: initializer, services: a, b)
|
|
return initializer((a!, b!))
|
|
|
|
} as (Resolver) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, argument: Arg1.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- argument: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 1 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, Arg1>(_ service: Service.Type, name: String? = nil, argument arg1: Arg1.Type, initializer: @escaping ((A, B)) -> Service) -> ServiceEntry<Service> {
|
|
return self.register(service.self, name: name, factory: { res, arg1 in
|
|
let a: A? = res.resolve(argument: arg1); let b: B? = res.resolve(argument: arg1)
|
|
checkResolved(initializer: initializer, services: a, b)
|
|
return initializer((a!, b!))
|
|
|
|
} as (Resolver, Arg1) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 2 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, Arg1, Arg2>(_ service: Service.Type, name: String? = nil, arguments arg1: Arg1.Type, _ arg2: Arg2.Type, initializer: @escaping ((A, B)) -> Service) -> ServiceEntry<Service> {
|
|
precondition(hasUnique(arguments: [arg1, arg2]), "Autoregistration of service with dynamic arguments of the same type (\(arg1), \(arg2)) is not supported")
|
|
return self.register(service.self, name: name, factory: { res, arg1, arg2 in
|
|
let a: A? = res.resolve(arguments: arg1, arg2); let b: B? = res.resolve(arguments: arg1, arg2)
|
|
checkResolved(initializer: initializer, services: a, b)
|
|
return initializer((a!, b!))
|
|
|
|
} as (Resolver, Arg1, Arg2) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C>(_ service: Service.Type, name: String? = nil, initializer: @escaping ((A, B, C)) -> Service) -> ServiceEntry<Service> {
|
|
return self.register(service.self, name: name, factory: { res in
|
|
let a: A? = res.resolve(); let b: B? = res.resolve(); let c: C? = res.resolve()
|
|
checkResolved(initializer: initializer, services: a, b, c)
|
|
return initializer((a!, b!, c!))
|
|
|
|
} as (Resolver) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, argument: Arg1.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- argument: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 1 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, Arg1>(_ service: Service.Type, name: String? = nil, argument arg1: Arg1.Type, initializer: @escaping ((A, B, C)) -> Service) -> ServiceEntry<Service> {
|
|
return self.register(service.self, name: name, factory: { res, arg1 in
|
|
let a: A? = res.resolve(argument: arg1); let b: B? = res.resolve(argument: arg1); let c: C? = res.resolve(argument: arg1)
|
|
checkResolved(initializer: initializer, services: a, b, c)
|
|
return initializer((a!, b!, c!))
|
|
|
|
} as (Resolver, Arg1) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 2 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, Arg1, Arg2>(_ service: Service.Type, name: String? = nil, arguments arg1: Arg1.Type, _ arg2: Arg2.Type, initializer: @escaping ((A, B, C)) -> Service) -> ServiceEntry<Service> {
|
|
precondition(hasUnique(arguments: [arg1, arg2]), "Autoregistration of service with dynamic arguments of the same type (\(arg1), \(arg2)) is not supported")
|
|
return self.register(service.self, name: name, factory: { res, arg1, arg2 in
|
|
let a: A? = res.resolve(arguments: arg1, arg2); let b: B? = res.resolve(arguments: arg1, arg2); let c: C? = res.resolve(arguments: arg1, arg2)
|
|
checkResolved(initializer: initializer, services: a, b, c)
|
|
return initializer((a!, b!, c!))
|
|
|
|
} as (Resolver, Arg1, Arg2) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self, Arg3.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 3 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, Arg1, Arg2, Arg3>(_ service: Service.Type, name: String? = nil, arguments arg1: Arg1.Type, _ arg2: Arg2.Type, _ arg3: Arg3.Type, initializer: @escaping ((A, B, C)) -> Service) -> ServiceEntry<Service> {
|
|
precondition(hasUnique(arguments: [arg1, arg2, arg3]), "Autoregistration of service with dynamic arguments of the same type (\(arg1), \(arg2), \(arg3)) is not supported")
|
|
return self.register(service.self, name: name, factory: { res, arg1, arg2, arg3 in
|
|
let a: A? = res.resolve(arguments: arg1, arg2, arg3); let b: B? = res.resolve(arguments: arg1, arg2, arg3); let c: C? = res.resolve(arguments: arg1, arg2, arg3)
|
|
checkResolved(initializer: initializer, services: a, b, c)
|
|
return initializer((a!, b!, c!))
|
|
|
|
} as (Resolver, Arg1, Arg2, Arg3) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D>(_ service: Service.Type, name: String? = nil, initializer: @escaping ((A, B, C, D)) -> Service) -> ServiceEntry<Service> {
|
|
return self.register(service.self, name: name, factory: { res in
|
|
let a: A? = res.resolve(); let b: B? = res.resolve(); let c: C? = res.resolve(); let d: D? = res.resolve()
|
|
checkResolved(initializer: initializer, services: a, b, c, d)
|
|
return initializer((a!, b!, c!, d!))
|
|
|
|
} as (Resolver) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, argument: Arg1.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- argument: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 1 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, Arg1>(_ service: Service.Type, name: String? = nil, argument arg1: Arg1.Type, initializer: @escaping ((A, B, C, D)) -> Service) -> ServiceEntry<Service> {
|
|
return self.register(service.self, name: name, factory: { res, arg1 in
|
|
let a: A? = res.resolve(argument: arg1); let b: B? = res.resolve(argument: arg1); let c: C? = res.resolve(argument: arg1); let d: D? = res.resolve(argument: arg1)
|
|
checkResolved(initializer: initializer, services: a, b, c, d)
|
|
return initializer((a!, b!, c!, d!))
|
|
|
|
} as (Resolver, Arg1) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 2 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, Arg1, Arg2>(_ service: Service.Type, name: String? = nil, arguments arg1: Arg1.Type, _ arg2: Arg2.Type, initializer: @escaping ((A, B, C, D)) -> Service) -> ServiceEntry<Service> {
|
|
precondition(hasUnique(arguments: [arg1, arg2]), "Autoregistration of service with dynamic arguments of the same type (\(arg1), \(arg2)) is not supported")
|
|
return self.register(service.self, name: name, factory: { res, arg1, arg2 in
|
|
let a: A? = res.resolve(arguments: arg1, arg2); let b: B? = res.resolve(arguments: arg1, arg2); let c: C? = res.resolve(arguments: arg1, arg2); let d: D? = res.resolve(arguments: arg1, arg2)
|
|
checkResolved(initializer: initializer, services: a, b, c, d)
|
|
return initializer((a!, b!, c!, d!))
|
|
|
|
} as (Resolver, Arg1, Arg2) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self, Arg3.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 3 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, Arg1, Arg2, Arg3>(_ service: Service.Type, name: String? = nil, arguments arg1: Arg1.Type, _ arg2: Arg2.Type, _ arg3: Arg3.Type, initializer: @escaping ((A, B, C, D)) -> Service) -> ServiceEntry<Service> {
|
|
precondition(hasUnique(arguments: [arg1, arg2, arg3]), "Autoregistration of service with dynamic arguments of the same type (\(arg1), \(arg2), \(arg3)) is not supported")
|
|
return self.register(service.self, name: name, factory: { res, arg1, arg2, arg3 in
|
|
let a: A? = res.resolve(arguments: arg1, arg2, arg3); let b: B? = res.resolve(arguments: arg1, arg2, arg3); let c: C? = res.resolve(arguments: arg1, arg2, arg3); let d: D? = res.resolve(arguments: arg1, arg2, arg3)
|
|
checkResolved(initializer: initializer, services: a, b, c, d)
|
|
return initializer((a!, b!, c!, d!))
|
|
|
|
} as (Resolver, Arg1, Arg2, Arg3) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E>(_ service: Service.Type, name: String? = nil, initializer: @escaping ((A, B, C, D, E)) -> Service) -> ServiceEntry<Service> {
|
|
return self.register(service.self, name: name, factory: { res in
|
|
let a: A? = res.resolve(); let b: B? = res.resolve(); let c: C? = res.resolve(); let d: D? = res.resolve(); let e: E? = res.resolve()
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e)
|
|
return initializer((a!, b!, c!, d!, e!))
|
|
|
|
} as (Resolver) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, argument: Arg1.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- argument: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 1 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, Arg1>(_ service: Service.Type, name: String? = nil, argument arg1: Arg1.Type, initializer: @escaping ((A, B, C, D, E)) -> Service) -> ServiceEntry<Service> {
|
|
return self.register(service.self, name: name, factory: { res, arg1 in
|
|
let a: A? = res.resolve(argument: arg1); let b: B? = res.resolve(argument: arg1); let c: C? = res.resolve(argument: arg1); let d: D? = res.resolve(argument: arg1); let e: E? = res.resolve(argument: arg1)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e)
|
|
return initializer((a!, b!, c!, d!, e!))
|
|
|
|
} as (Resolver, Arg1) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 2 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, Arg1, Arg2>(_ service: Service.Type, name: String? = nil, arguments arg1: Arg1.Type, _ arg2: Arg2.Type, initializer: @escaping ((A, B, C, D, E)) -> Service) -> ServiceEntry<Service> {
|
|
precondition(hasUnique(arguments: [arg1, arg2]), "Autoregistration of service with dynamic arguments of the same type (\(arg1), \(arg2)) is not supported")
|
|
return self.register(service.self, name: name, factory: { res, arg1, arg2 in
|
|
let a: A? = res.resolve(arguments: arg1, arg2); let b: B? = res.resolve(arguments: arg1, arg2); let c: C? = res.resolve(arguments: arg1, arg2); let d: D? = res.resolve(arguments: arg1, arg2); let e: E? = res.resolve(arguments: arg1, arg2)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e)
|
|
return initializer((a!, b!, c!, d!, e!))
|
|
|
|
} as (Resolver, Arg1, Arg2) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self, Arg3.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 3 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, Arg1, Arg2, Arg3>(_ service: Service.Type, name: String? = nil, arguments arg1: Arg1.Type, _ arg2: Arg2.Type, _ arg3: Arg3.Type, initializer: @escaping ((A, B, C, D, E)) -> Service) -> ServiceEntry<Service> {
|
|
precondition(hasUnique(arguments: [arg1, arg2, arg3]), "Autoregistration of service with dynamic arguments of the same type (\(arg1), \(arg2), \(arg3)) is not supported")
|
|
return self.register(service.self, name: name, factory: { res, arg1, arg2, arg3 in
|
|
let a: A? = res.resolve(arguments: arg1, arg2, arg3); let b: B? = res.resolve(arguments: arg1, arg2, arg3); let c: C? = res.resolve(arguments: arg1, arg2, arg3); let d: D? = res.resolve(arguments: arg1, arg2, arg3); let e: E? = res.resolve(arguments: arg1, arg2, arg3)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e)
|
|
return initializer((a!, b!, c!, d!, e!))
|
|
|
|
} as (Resolver, Arg1, Arg2, Arg3) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F>(_ service: Service.Type, name: String? = nil, initializer: @escaping ((A, B, C, D, E, F)) -> Service) -> ServiceEntry<Service> {
|
|
return self.register(service.self, name: name, factory: { res in
|
|
let a: A? = res.resolve(); let b: B? = res.resolve(); let c: C? = res.resolve(); let d: D? = res.resolve(); let e: E? = res.resolve(); let f: F? = res.resolve()
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f)
|
|
return initializer((a!, b!, c!, d!, e!, f!))
|
|
|
|
} as (Resolver) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, argument: Arg1.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- argument: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 1 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, Arg1>(_ service: Service.Type, name: String? = nil, argument arg1: Arg1.Type, initializer: @escaping ((A, B, C, D, E, F)) -> Service) -> ServiceEntry<Service> {
|
|
return self.register(service.self, name: name, factory: { res, arg1 in
|
|
let a: A? = res.resolve(argument: arg1); let b: B? = res.resolve(argument: arg1); let c: C? = res.resolve(argument: arg1); let d: D? = res.resolve(argument: arg1); let e: E? = res.resolve(argument: arg1); let f: F? = res.resolve(argument: arg1)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f)
|
|
return initializer((a!, b!, c!, d!, e!, f!))
|
|
|
|
} as (Resolver, Arg1) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 2 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, Arg1, Arg2>(_ service: Service.Type, name: String? = nil, arguments arg1: Arg1.Type, _ arg2: Arg2.Type, initializer: @escaping ((A, B, C, D, E, F)) -> Service) -> ServiceEntry<Service> {
|
|
precondition(hasUnique(arguments: [arg1, arg2]), "Autoregistration of service with dynamic arguments of the same type (\(arg1), \(arg2)) is not supported")
|
|
return self.register(service.self, name: name, factory: { res, arg1, arg2 in
|
|
let a: A? = res.resolve(arguments: arg1, arg2); let b: B? = res.resolve(arguments: arg1, arg2); let c: C? = res.resolve(arguments: arg1, arg2); let d: D? = res.resolve(arguments: arg1, arg2); let e: E? = res.resolve(arguments: arg1, arg2); let f: F? = res.resolve(arguments: arg1, arg2)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f)
|
|
return initializer((a!, b!, c!, d!, e!, f!))
|
|
|
|
} as (Resolver, Arg1, Arg2) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self, Arg3.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 3 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, Arg1, Arg2, Arg3>(_ service: Service.Type, name: String? = nil, arguments arg1: Arg1.Type, _ arg2: Arg2.Type, _ arg3: Arg3.Type, initializer: @escaping ((A, B, C, D, E, F)) -> Service) -> ServiceEntry<Service> {
|
|
precondition(hasUnique(arguments: [arg1, arg2, arg3]), "Autoregistration of service with dynamic arguments of the same type (\(arg1), \(arg2), \(arg3)) is not supported")
|
|
return self.register(service.self, name: name, factory: { res, arg1, arg2, arg3 in
|
|
let a: A? = res.resolve(arguments: arg1, arg2, arg3); let b: B? = res.resolve(arguments: arg1, arg2, arg3); let c: C? = res.resolve(arguments: arg1, arg2, arg3); let d: D? = res.resolve(arguments: arg1, arg2, arg3); let e: E? = res.resolve(arguments: arg1, arg2, arg3); let f: F? = res.resolve(arguments: arg1, arg2, arg3)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f)
|
|
return initializer((a!, b!, c!, d!, e!, f!))
|
|
|
|
} as (Resolver, Arg1, Arg2, Arg3) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G>(_ service: Service.Type, name: String? = nil, initializer: @escaping ((A, B, C, D, E, F, G)) -> Service) -> ServiceEntry<Service> {
|
|
return self.register(service.self, name: name, factory: { res in
|
|
let a: A? = res.resolve(); let b: B? = res.resolve(); let c: C? = res.resolve(); let d: D? = res.resolve(); let e: E? = res.resolve(); let f: F? = res.resolve(); let g: G? = res.resolve()
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!))
|
|
|
|
} as (Resolver) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, argument: Arg1.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- argument: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 1 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, Arg1>(_ service: Service.Type, name: String? = nil, argument arg1: Arg1.Type, initializer: @escaping ((A, B, C, D, E, F, G)) -> Service) -> ServiceEntry<Service> {
|
|
return self.register(service.self, name: name, factory: { res, arg1 in
|
|
let a: A? = res.resolve(argument: arg1); let b: B? = res.resolve(argument: arg1); let c: C? = res.resolve(argument: arg1); let d: D? = res.resolve(argument: arg1); let e: E? = res.resolve(argument: arg1); let f: F? = res.resolve(argument: arg1); let g: G? = res.resolve(argument: arg1)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!))
|
|
|
|
} as (Resolver, Arg1) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 2 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, Arg1, Arg2>(_ service: Service.Type, name: String? = nil, arguments arg1: Arg1.Type, _ arg2: Arg2.Type, initializer: @escaping ((A, B, C, D, E, F, G)) -> Service) -> ServiceEntry<Service> {
|
|
precondition(hasUnique(arguments: [arg1, arg2]), "Autoregistration of service with dynamic arguments of the same type (\(arg1), \(arg2)) is not supported")
|
|
return self.register(service.self, name: name, factory: { res, arg1, arg2 in
|
|
let a: A? = res.resolve(arguments: arg1, arg2); let b: B? = res.resolve(arguments: arg1, arg2); let c: C? = res.resolve(arguments: arg1, arg2); let d: D? = res.resolve(arguments: arg1, arg2); let e: E? = res.resolve(arguments: arg1, arg2); let f: F? = res.resolve(arguments: arg1, arg2); let g: G? = res.resolve(arguments: arg1, arg2)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!))
|
|
|
|
} as (Resolver, Arg1, Arg2) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self, Arg3.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 3 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, Arg1, Arg2, Arg3>(_ service: Service.Type, name: String? = nil, arguments arg1: Arg1.Type, _ arg2: Arg2.Type, _ arg3: Arg3.Type, initializer: @escaping ((A, B, C, D, E, F, G)) -> Service) -> ServiceEntry<Service> {
|
|
precondition(hasUnique(arguments: [arg1, arg2, arg3]), "Autoregistration of service with dynamic arguments of the same type (\(arg1), \(arg2), \(arg3)) is not supported")
|
|
return self.register(service.self, name: name, factory: { res, arg1, arg2, arg3 in
|
|
let a: A? = res.resolve(arguments: arg1, arg2, arg3); let b: B? = res.resolve(arguments: arg1, arg2, arg3); let c: C? = res.resolve(arguments: arg1, arg2, arg3); let d: D? = res.resolve(arguments: arg1, arg2, arg3); let e: E? = res.resolve(arguments: arg1, arg2, arg3); let f: F? = res.resolve(arguments: arg1, arg2, arg3); let g: G? = res.resolve(arguments: arg1, arg2, arg3)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!))
|
|
|
|
} as (Resolver, Arg1, Arg2, Arg3) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H>(_ service: Service.Type, name: String? = nil, initializer: @escaping ((A, B, C, D, E, F, G, H)) -> Service) -> ServiceEntry<Service> {
|
|
return self.register(service.self, name: name, factory: { res in
|
|
let a: A? = res.resolve(); let b: B? = res.resolve(); let c: C? = res.resolve(); let d: D? = res.resolve(); let e: E? = res.resolve(); let f: F? = res.resolve(); let g: G? = res.resolve(); let h: H? = res.resolve()
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!))
|
|
|
|
} as (Resolver) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, argument: Arg1.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- argument: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 1 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, Arg1>(_ service: Service.Type, name: String? = nil, argument arg1: Arg1.Type, initializer: @escaping ((A, B, C, D, E, F, G, H)) -> Service) -> ServiceEntry<Service> {
|
|
return self.register(service.self, name: name, factory: { res, arg1 in
|
|
let a: A? = res.resolve(argument: arg1); let b: B? = res.resolve(argument: arg1); let c: C? = res.resolve(argument: arg1); let d: D? = res.resolve(argument: arg1); let e: E? = res.resolve(argument: arg1); let f: F? = res.resolve(argument: arg1); let g: G? = res.resolve(argument: arg1); let h: H? = res.resolve(argument: arg1)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!))
|
|
|
|
} as (Resolver, Arg1) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 2 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, Arg1, Arg2>(_ service: Service.Type, name: String? = nil, arguments arg1: Arg1.Type, _ arg2: Arg2.Type, initializer: @escaping ((A, B, C, D, E, F, G, H)) -> Service) -> ServiceEntry<Service> {
|
|
precondition(hasUnique(arguments: [arg1, arg2]), "Autoregistration of service with dynamic arguments of the same type (\(arg1), \(arg2)) is not supported")
|
|
return self.register(service.self, name: name, factory: { res, arg1, arg2 in
|
|
let a: A? = res.resolve(arguments: arg1, arg2); let b: B? = res.resolve(arguments: arg1, arg2); let c: C? = res.resolve(arguments: arg1, arg2); let d: D? = res.resolve(arguments: arg1, arg2); let e: E? = res.resolve(arguments: arg1, arg2); let f: F? = res.resolve(arguments: arg1, arg2); let g: G? = res.resolve(arguments: arg1, arg2); let h: H? = res.resolve(arguments: arg1, arg2)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!))
|
|
|
|
} as (Resolver, Arg1, Arg2) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self, Arg3.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 3 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, Arg1, Arg2, Arg3>(_ service: Service.Type, name: String? = nil, arguments arg1: Arg1.Type, _ arg2: Arg2.Type, _ arg3: Arg3.Type, initializer: @escaping ((A, B, C, D, E, F, G, H)) -> Service) -> ServiceEntry<Service> {
|
|
precondition(hasUnique(arguments: [arg1, arg2, arg3]), "Autoregistration of service with dynamic arguments of the same type (\(arg1), \(arg2), \(arg3)) is not supported")
|
|
return self.register(service.self, name: name, factory: { res, arg1, arg2, arg3 in
|
|
let a: A? = res.resolve(arguments: arg1, arg2, arg3); let b: B? = res.resolve(arguments: arg1, arg2, arg3); let c: C? = res.resolve(arguments: arg1, arg2, arg3); let d: D? = res.resolve(arguments: arg1, arg2, arg3); let e: E? = res.resolve(arguments: arg1, arg2, arg3); let f: F? = res.resolve(arguments: arg1, arg2, arg3); let g: G? = res.resolve(arguments: arg1, arg2, arg3); let h: H? = res.resolve(arguments: arg1, arg2, arg3)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!))
|
|
|
|
} as (Resolver, Arg1, Arg2, Arg3) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I>(_ service: Service.Type, name: String? = nil, initializer: @escaping ((A, B, C, D, E, F, G, H, I)) -> Service) -> ServiceEntry<Service> {
|
|
return self.register(service.self, name: name, factory: { res in
|
|
let a: A? = res.resolve(); let b: B? = res.resolve(); let c: C? = res.resolve(); let d: D? = res.resolve(); let e: E? = res.resolve(); let f: F? = res.resolve(); let g: G? = res.resolve(); let h: H? = res.resolve(); let i: I? = res.resolve()
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!))
|
|
|
|
} as (Resolver) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, argument: Arg1.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- argument: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 1 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, Arg1>(_ service: Service.Type, name: String? = nil, argument arg1: Arg1.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I)) -> Service) -> ServiceEntry<Service> {
|
|
return self.register(service.self, name: name, factory: { res, arg1 in
|
|
let a: A? = res.resolve(argument: arg1); let b: B? = res.resolve(argument: arg1); let c: C? = res.resolve(argument: arg1); let d: D? = res.resolve(argument: arg1); let e: E? = res.resolve(argument: arg1); let f: F? = res.resolve(argument: arg1); let g: G? = res.resolve(argument: arg1); let h: H? = res.resolve(argument: arg1); let i: I? = res.resolve(argument: arg1)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!))
|
|
|
|
} as (Resolver, Arg1) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 2 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, Arg1, Arg2>(_ service: Service.Type, name: String? = nil, arguments arg1: Arg1.Type, _ arg2: Arg2.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I)) -> Service) -> ServiceEntry<Service> {
|
|
precondition(hasUnique(arguments: [arg1, arg2]), "Autoregistration of service with dynamic arguments of the same type (\(arg1), \(arg2)) is not supported")
|
|
return self.register(service.self, name: name, factory: { res, arg1, arg2 in
|
|
let a: A? = res.resolve(arguments: arg1, arg2); let b: B? = res.resolve(arguments: arg1, arg2); let c: C? = res.resolve(arguments: arg1, arg2); let d: D? = res.resolve(arguments: arg1, arg2); let e: E? = res.resolve(arguments: arg1, arg2); let f: F? = res.resolve(arguments: arg1, arg2); let g: G? = res.resolve(arguments: arg1, arg2); let h: H? = res.resolve(arguments: arg1, arg2); let i: I? = res.resolve(arguments: arg1, arg2)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!))
|
|
|
|
} as (Resolver, Arg1, Arg2) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self, Arg3.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 3 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, Arg1, Arg2, Arg3>(_ service: Service.Type, name: String? = nil, arguments arg1: Arg1.Type, _ arg2: Arg2.Type, _ arg3: Arg3.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I)) -> Service) -> ServiceEntry<Service> {
|
|
precondition(hasUnique(arguments: [arg1, arg2, arg3]), "Autoregistration of service with dynamic arguments of the same type (\(arg1), \(arg2), \(arg3)) is not supported")
|
|
return self.register(service.self, name: name, factory: { res, arg1, arg2, arg3 in
|
|
let a: A? = res.resolve(arguments: arg1, arg2, arg3); let b: B? = res.resolve(arguments: arg1, arg2, arg3); let c: C? = res.resolve(arguments: arg1, arg2, arg3); let d: D? = res.resolve(arguments: arg1, arg2, arg3); let e: E? = res.resolve(arguments: arg1, arg2, arg3); let f: F? = res.resolve(arguments: arg1, arg2, arg3); let g: G? = res.resolve(arguments: arg1, arg2, arg3); let h: H? = res.resolve(arguments: arg1, arg2, arg3); let i: I? = res.resolve(arguments: arg1, arg2, arg3)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!))
|
|
|
|
} as (Resolver, Arg1, Arg2, Arg3) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J>(_ service: Service.Type, name: String? = nil, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J)) -> Service) -> ServiceEntry<Service> {
|
|
return self.register(service.self, name: name, factory: { res in
|
|
let a: A? = res.resolve(); let b: B? = res.resolve(); let c: C? = res.resolve(); let d: D? = res.resolve(); let e: E? = res.resolve(); let f: F? = res.resolve(); let g: G? = res.resolve(); let h: H? = res.resolve(); let i: I? = res.resolve(); let j: J? = res.resolve()
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!))
|
|
|
|
} as (Resolver) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, argument: Arg1.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- argument: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 1 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, Arg1>(_ service: Service.Type, name: String? = nil, argument arg1: Arg1.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J)) -> Service) -> ServiceEntry<Service> {
|
|
return self.register(service.self, name: name, factory: { res, arg1 in
|
|
let a: A? = res.resolve(argument: arg1); let b: B? = res.resolve(argument: arg1); let c: C? = res.resolve(argument: arg1); let d: D? = res.resolve(argument: arg1); let e: E? = res.resolve(argument: arg1); let f: F? = res.resolve(argument: arg1); let g: G? = res.resolve(argument: arg1); let h: H? = res.resolve(argument: arg1); let i: I? = res.resolve(argument: arg1); let j: J? = res.resolve(argument: arg1)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!))
|
|
|
|
} as (Resolver, Arg1) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 2 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, Arg1, Arg2>(_ service: Service.Type, name: String? = nil, arguments arg1: Arg1.Type, _ arg2: Arg2.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J)) -> Service) -> ServiceEntry<Service> {
|
|
precondition(hasUnique(arguments: [arg1, arg2]), "Autoregistration of service with dynamic arguments of the same type (\(arg1), \(arg2)) is not supported")
|
|
return self.register(service.self, name: name, factory: { res, arg1, arg2 in
|
|
let a: A? = res.resolve(arguments: arg1, arg2); let b: B? = res.resolve(arguments: arg1, arg2); let c: C? = res.resolve(arguments: arg1, arg2); let d: D? = res.resolve(arguments: arg1, arg2); let e: E? = res.resolve(arguments: arg1, arg2); let f: F? = res.resolve(arguments: arg1, arg2); let g: G? = res.resolve(arguments: arg1, arg2); let h: H? = res.resolve(arguments: arg1, arg2); let i: I? = res.resolve(arguments: arg1, arg2); let j: J? = res.resolve(arguments: arg1, arg2)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!))
|
|
|
|
} as (Resolver, Arg1, Arg2) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self, Arg3.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 3 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, Arg1, Arg2, Arg3>(_ service: Service.Type, name: String? = nil, arguments arg1: Arg1.Type, _ arg2: Arg2.Type, _ arg3: Arg3.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J)) -> Service) -> ServiceEntry<Service> {
|
|
precondition(hasUnique(arguments: [arg1, arg2, arg3]), "Autoregistration of service with dynamic arguments of the same type (\(arg1), \(arg2), \(arg3)) is not supported")
|
|
return self.register(service.self, name: name, factory: { res, arg1, arg2, arg3 in
|
|
let a: A? = res.resolve(arguments: arg1, arg2, arg3); let b: B? = res.resolve(arguments: arg1, arg2, arg3); let c: C? = res.resolve(arguments: arg1, arg2, arg3); let d: D? = res.resolve(arguments: arg1, arg2, arg3); let e: E? = res.resolve(arguments: arg1, arg2, arg3); let f: F? = res.resolve(arguments: arg1, arg2, arg3); let g: G? = res.resolve(arguments: arg1, arg2, arg3); let h: H? = res.resolve(arguments: arg1, arg2, arg3); let i: I? = res.resolve(arguments: arg1, arg2, arg3); let j: J? = res.resolve(arguments: arg1, arg2, arg3)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!))
|
|
|
|
} as (Resolver, Arg1, Arg2, Arg3) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, K>(_ service: Service.Type, name: String? = nil, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K)) -> Service) -> ServiceEntry<Service> {
|
|
return self.register(service.self, name: name, factory: { res in
|
|
let a: A? = res.resolve(); let b: B? = res.resolve(); let c: C? = res.resolve(); let d: D? = res.resolve(); let e: E? = res.resolve(); let f: F? = res.resolve(); let g: G? = res.resolve(); let h: H? = res.resolve(); let i: I? = res.resolve(); let j: J? = res.resolve(); let k: K? = res.resolve()
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!))
|
|
|
|
} as (Resolver) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, argument: Arg1.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- argument: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 1 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, Arg1>(_ service: Service.Type, name: String? = nil, argument arg1: Arg1.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K)) -> Service) -> ServiceEntry<Service> {
|
|
return self.register(service.self, name: name, factory: { res, arg1 in
|
|
let a: A? = res.resolve(argument: arg1); let b: B? = res.resolve(argument: arg1); let c: C? = res.resolve(argument: arg1); let d: D? = res.resolve(argument: arg1); let e: E? = res.resolve(argument: arg1); let f: F? = res.resolve(argument: arg1); let g: G? = res.resolve(argument: arg1); let h: H? = res.resolve(argument: arg1); let i: I? = res.resolve(argument: arg1); let j: J? = res.resolve(argument: arg1); let k: K? = res.resolve(argument: arg1)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!))
|
|
|
|
} as (Resolver, Arg1) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 2 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, Arg1, Arg2>(_ service: Service.Type, name: String? = nil, arguments arg1: Arg1.Type, _ arg2: Arg2.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K)) -> Service) -> ServiceEntry<Service> {
|
|
precondition(hasUnique(arguments: [arg1, arg2]), "Autoregistration of service with dynamic arguments of the same type (\(arg1), \(arg2)) is not supported")
|
|
return self.register(service.self, name: name, factory: { res, arg1, arg2 in
|
|
let a: A? = res.resolve(arguments: arg1, arg2); let b: B? = res.resolve(arguments: arg1, arg2); let c: C? = res.resolve(arguments: arg1, arg2); let d: D? = res.resolve(arguments: arg1, arg2); let e: E? = res.resolve(arguments: arg1, arg2); let f: F? = res.resolve(arguments: arg1, arg2); let g: G? = res.resolve(arguments: arg1, arg2); let h: H? = res.resolve(arguments: arg1, arg2); let i: I? = res.resolve(arguments: arg1, arg2); let j: J? = res.resolve(arguments: arg1, arg2); let k: K? = res.resolve(arguments: arg1, arg2)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!))
|
|
|
|
} as (Resolver, Arg1, Arg2) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self, Arg3.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 3 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, Arg1, Arg2, Arg3>(_ service: Service.Type, name: String? = nil, arguments arg1: Arg1.Type, _ arg2: Arg2.Type, _ arg3: Arg3.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K)) -> Service) -> ServiceEntry<Service> {
|
|
precondition(hasUnique(arguments: [arg1, arg2, arg3]), "Autoregistration of service with dynamic arguments of the same type (\(arg1), \(arg2), \(arg3)) is not supported")
|
|
return self.register(service.self, name: name, factory: { res, arg1, arg2, arg3 in
|
|
let a: A? = res.resolve(arguments: arg1, arg2, arg3); let b: B? = res.resolve(arguments: arg1, arg2, arg3); let c: C? = res.resolve(arguments: arg1, arg2, arg3); let d: D? = res.resolve(arguments: arg1, arg2, arg3); let e: E? = res.resolve(arguments: arg1, arg2, arg3); let f: F? = res.resolve(arguments: arg1, arg2, arg3); let g: G? = res.resolve(arguments: arg1, arg2, arg3); let h: H? = res.resolve(arguments: arg1, arg2, arg3); let i: I? = res.resolve(arguments: arg1, arg2, arg3); let j: J? = res.resolve(arguments: arg1, arg2, arg3); let k: K? = res.resolve(arguments: arg1, arg2, arg3)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!))
|
|
|
|
} as (Resolver, Arg1, Arg2, Arg3) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L>(_ service: Service.Type, name: String? = nil, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L)) -> Service) -> ServiceEntry<Service> {
|
|
return self.register(service.self, name: name, factory: { res in
|
|
let a: A? = res.resolve(); let b: B? = res.resolve(); let c: C? = res.resolve(); let d: D? = res.resolve(); let e: E? = res.resolve(); let f: F? = res.resolve(); let g: G? = res.resolve(); let h: H? = res.resolve(); let i: I? = res.resolve(); let j: J? = res.resolve(); let k: K? = res.resolve(); let l: L? = res.resolve()
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!))
|
|
|
|
} as (Resolver) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, argument: Arg1.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- argument: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 1 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, Arg1>(_ service: Service.Type, name: String? = nil, argument arg1: Arg1.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L)) -> Service) -> ServiceEntry<Service> {
|
|
return self.register(service.self, name: name, factory: { res, arg1 in
|
|
let a: A? = res.resolve(argument: arg1); let b: B? = res.resolve(argument: arg1); let c: C? = res.resolve(argument: arg1); let d: D? = res.resolve(argument: arg1); let e: E? = res.resolve(argument: arg1); let f: F? = res.resolve(argument: arg1); let g: G? = res.resolve(argument: arg1); let h: H? = res.resolve(argument: arg1); let i: I? = res.resolve(argument: arg1); let j: J? = res.resolve(argument: arg1); let k: K? = res.resolve(argument: arg1); let l: L? = res.resolve(argument: arg1)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!))
|
|
|
|
} as (Resolver, Arg1) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 2 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, Arg1, Arg2>(_ service: Service.Type, name: String? = nil, arguments arg1: Arg1.Type, _ arg2: Arg2.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L)) -> Service) -> ServiceEntry<Service> {
|
|
precondition(hasUnique(arguments: [arg1, arg2]), "Autoregistration of service with dynamic arguments of the same type (\(arg1), \(arg2)) is not supported")
|
|
return self.register(service.self, name: name, factory: { res, arg1, arg2 in
|
|
let a: A? = res.resolve(arguments: arg1, arg2); let b: B? = res.resolve(arguments: arg1, arg2); let c: C? = res.resolve(arguments: arg1, arg2); let d: D? = res.resolve(arguments: arg1, arg2); let e: E? = res.resolve(arguments: arg1, arg2); let f: F? = res.resolve(arguments: arg1, arg2); let g: G? = res.resolve(arguments: arg1, arg2); let h: H? = res.resolve(arguments: arg1, arg2); let i: I? = res.resolve(arguments: arg1, arg2); let j: J? = res.resolve(arguments: arg1, arg2); let k: K? = res.resolve(arguments: arg1, arg2); let l: L? = res.resolve(arguments: arg1, arg2)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!))
|
|
|
|
} as (Resolver, Arg1, Arg2) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self, Arg3.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 3 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, Arg1, Arg2, Arg3>(_ service: Service.Type, name: String? = nil, arguments arg1: Arg1.Type, _ arg2: Arg2.Type, _ arg3: Arg3.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L)) -> Service) -> ServiceEntry<Service> {
|
|
precondition(hasUnique(arguments: [arg1, arg2, arg3]), "Autoregistration of service with dynamic arguments of the same type (\(arg1), \(arg2), \(arg3)) is not supported")
|
|
return self.register(service.self, name: name, factory: { res, arg1, arg2, arg3 in
|
|
let a: A? = res.resolve(arguments: arg1, arg2, arg3); let b: B? = res.resolve(arguments: arg1, arg2, arg3); let c: C? = res.resolve(arguments: arg1, arg2, arg3); let d: D? = res.resolve(arguments: arg1, arg2, arg3); let e: E? = res.resolve(arguments: arg1, arg2, arg3); let f: F? = res.resolve(arguments: arg1, arg2, arg3); let g: G? = res.resolve(arguments: arg1, arg2, arg3); let h: H? = res.resolve(arguments: arg1, arg2, arg3); let i: I? = res.resolve(arguments: arg1, arg2, arg3); let j: J? = res.resolve(arguments: arg1, arg2, arg3); let k: K? = res.resolve(arguments: arg1, arg2, arg3); let l: L? = res.resolve(arguments: arg1, arg2, arg3)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!))
|
|
|
|
} as (Resolver, Arg1, Arg2, Arg3) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M>(_ service: Service.Type, name: String? = nil, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M)) -> Service) -> ServiceEntry<Service> {
|
|
return self.register(service.self, name: name, factory: { res in
|
|
let a: A? = res.resolve(); let b: B? = res.resolve(); let c: C? = res.resolve(); let d: D? = res.resolve(); let e: E? = res.resolve(); let f: F? = res.resolve(); let g: G? = res.resolve(); let h: H? = res.resolve(); let i: I? = res.resolve(); let j: J? = res.resolve(); let k: K? = res.resolve(); let l: L? = res.resolve(); let m: M? = res.resolve()
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!))
|
|
|
|
} as (Resolver) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, argument: Arg1.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- argument: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 1 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, Arg1>(_ service: Service.Type, name: String? = nil, argument arg1: Arg1.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M)) -> Service) -> ServiceEntry<Service> {
|
|
return self.register(service.self, name: name, factory: { res, arg1 in
|
|
let a: A? = res.resolve(argument: arg1); let b: B? = res.resolve(argument: arg1); let c: C? = res.resolve(argument: arg1); let d: D? = res.resolve(argument: arg1); let e: E? = res.resolve(argument: arg1); let f: F? = res.resolve(argument: arg1); let g: G? = res.resolve(argument: arg1); let h: H? = res.resolve(argument: arg1); let i: I? = res.resolve(argument: arg1); let j: J? = res.resolve(argument: arg1); let k: K? = res.resolve(argument: arg1); let l: L? = res.resolve(argument: arg1); let m: M? = res.resolve(argument: arg1)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!))
|
|
|
|
} as (Resolver, Arg1) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 2 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, Arg1, Arg2>(_ service: Service.Type, name: String? = nil, arguments arg1: Arg1.Type, _ arg2: Arg2.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M)) -> Service) -> ServiceEntry<Service> {
|
|
precondition(hasUnique(arguments: [arg1, arg2]), "Autoregistration of service with dynamic arguments of the same type (\(arg1), \(arg2)) is not supported")
|
|
return self.register(service.self, name: name, factory: { res, arg1, arg2 in
|
|
let a: A? = res.resolve(arguments: arg1, arg2); let b: B? = res.resolve(arguments: arg1, arg2); let c: C? = res.resolve(arguments: arg1, arg2); let d: D? = res.resolve(arguments: arg1, arg2); let e: E? = res.resolve(arguments: arg1, arg2); let f: F? = res.resolve(arguments: arg1, arg2); let g: G? = res.resolve(arguments: arg1, arg2); let h: H? = res.resolve(arguments: arg1, arg2); let i: I? = res.resolve(arguments: arg1, arg2); let j: J? = res.resolve(arguments: arg1, arg2); let k: K? = res.resolve(arguments: arg1, arg2); let l: L? = res.resolve(arguments: arg1, arg2); let m: M? = res.resolve(arguments: arg1, arg2)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!))
|
|
|
|
} as (Resolver, Arg1, Arg2) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self, Arg3.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 3 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, Arg1, Arg2, Arg3>(_ service: Service.Type, name: String? = nil, arguments arg1: Arg1.Type, _ arg2: Arg2.Type, _ arg3: Arg3.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M)) -> Service) -> ServiceEntry<Service> {
|
|
precondition(hasUnique(arguments: [arg1, arg2, arg3]), "Autoregistration of service with dynamic arguments of the same type (\(arg1), \(arg2), \(arg3)) is not supported")
|
|
return self.register(service.self, name: name, factory: { res, arg1, arg2, arg3 in
|
|
let a: A? = res.resolve(arguments: arg1, arg2, arg3); let b: B? = res.resolve(arguments: arg1, arg2, arg3); let c: C? = res.resolve(arguments: arg1, arg2, arg3); let d: D? = res.resolve(arguments: arg1, arg2, arg3); let e: E? = res.resolve(arguments: arg1, arg2, arg3); let f: F? = res.resolve(arguments: arg1, arg2, arg3); let g: G? = res.resolve(arguments: arg1, arg2, arg3); let h: H? = res.resolve(arguments: arg1, arg2, arg3); let i: I? = res.resolve(arguments: arg1, arg2, arg3); let j: J? = res.resolve(arguments: arg1, arg2, arg3); let k: K? = res.resolve(arguments: arg1, arg2, arg3); let l: L? = res.resolve(arguments: arg1, arg2, arg3); let m: M? = res.resolve(arguments: arg1, arg2, arg3)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!))
|
|
|
|
} as (Resolver, Arg1, Arg2, Arg3) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N>(_ service: Service.Type, name: String? = nil, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N)) -> Service) -> ServiceEntry<Service> {
|
|
return self.register(service.self, name: name, factory: { res in
|
|
let a: A? = res.resolve(); let b: B? = res.resolve(); let c: C? = res.resolve(); let d: D? = res.resolve(); let e: E? = res.resolve(); let f: F? = res.resolve(); let g: G? = res.resolve(); let h: H? = res.resolve(); let i: I? = res.resolve(); let j: J? = res.resolve(); let k: K? = res.resolve(); let l: L? = res.resolve(); let m: M? = res.resolve(); let n: N? = res.resolve()
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!))
|
|
|
|
} as (Resolver) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, argument: Arg1.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- argument: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 1 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, Arg1>(_ service: Service.Type, name: String? = nil, argument arg1: Arg1.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N)) -> Service) -> ServiceEntry<Service> {
|
|
return self.register(service.self, name: name, factory: { res, arg1 in
|
|
let a: A? = res.resolve(argument: arg1); let b: B? = res.resolve(argument: arg1); let c: C? = res.resolve(argument: arg1); let d: D? = res.resolve(argument: arg1); let e: E? = res.resolve(argument: arg1); let f: F? = res.resolve(argument: arg1); let g: G? = res.resolve(argument: arg1); let h: H? = res.resolve(argument: arg1); let i: I? = res.resolve(argument: arg1); let j: J? = res.resolve(argument: arg1); let k: K? = res.resolve(argument: arg1); let l: L? = res.resolve(argument: arg1); let m: M? = res.resolve(argument: arg1); let n: N? = res.resolve(argument: arg1)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!))
|
|
|
|
} as (Resolver, Arg1) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 2 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, Arg1, Arg2>(_ service: Service.Type, name: String? = nil, arguments arg1: Arg1.Type, _ arg2: Arg2.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N)) -> Service) -> ServiceEntry<Service> {
|
|
precondition(hasUnique(arguments: [arg1, arg2]), "Autoregistration of service with dynamic arguments of the same type (\(arg1), \(arg2)) is not supported")
|
|
return self.register(service.self, name: name, factory: { res, arg1, arg2 in
|
|
let a: A? = res.resolve(arguments: arg1, arg2); let b: B? = res.resolve(arguments: arg1, arg2); let c: C? = res.resolve(arguments: arg1, arg2); let d: D? = res.resolve(arguments: arg1, arg2); let e: E? = res.resolve(arguments: arg1, arg2); let f: F? = res.resolve(arguments: arg1, arg2); let g: G? = res.resolve(arguments: arg1, arg2); let h: H? = res.resolve(arguments: arg1, arg2); let i: I? = res.resolve(arguments: arg1, arg2); let j: J? = res.resolve(arguments: arg1, arg2); let k: K? = res.resolve(arguments: arg1, arg2); let l: L? = res.resolve(arguments: arg1, arg2); let m: M? = res.resolve(arguments: arg1, arg2); let n: N? = res.resolve(arguments: arg1, arg2)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!))
|
|
|
|
} as (Resolver, Arg1, Arg2) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self, Arg3.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 3 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, Arg1, Arg2, Arg3>(_ service: Service.Type, name: String? = nil, arguments arg1: Arg1.Type, _ arg2: Arg2.Type, _ arg3: Arg3.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N)) -> Service) -> ServiceEntry<Service> {
|
|
precondition(hasUnique(arguments: [arg1, arg2, arg3]), "Autoregistration of service with dynamic arguments of the same type (\(arg1), \(arg2), \(arg3)) is not supported")
|
|
return self.register(service.self, name: name, factory: { res, arg1, arg2, arg3 in
|
|
let a: A? = res.resolve(arguments: arg1, arg2, arg3); let b: B? = res.resolve(arguments: arg1, arg2, arg3); let c: C? = res.resolve(arguments: arg1, arg2, arg3); let d: D? = res.resolve(arguments: arg1, arg2, arg3); let e: E? = res.resolve(arguments: arg1, arg2, arg3); let f: F? = res.resolve(arguments: arg1, arg2, arg3); let g: G? = res.resolve(arguments: arg1, arg2, arg3); let h: H? = res.resolve(arguments: arg1, arg2, arg3); let i: I? = res.resolve(arguments: arg1, arg2, arg3); let j: J? = res.resolve(arguments: arg1, arg2, arg3); let k: K? = res.resolve(arguments: arg1, arg2, arg3); let l: L? = res.resolve(arguments: arg1, arg2, arg3); let m: M? = res.resolve(arguments: arg1, arg2, arg3); let n: N? = res.resolve(arguments: arg1, arg2, arg3)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!))
|
|
|
|
} as (Resolver, Arg1, Arg2, Arg3) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>(_ service: Service.Type, name: String? = nil, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O)) -> Service) -> ServiceEntry<Service> {
|
|
return self.register(service.self, name: name, factory: { res in
|
|
let a: A? = res.resolve(); let b: B? = res.resolve(); let c: C? = res.resolve(); let d: D? = res.resolve(); let e: E? = res.resolve(); let f: F? = res.resolve(); let g: G? = res.resolve(); let h: H? = res.resolve(); let i: I? = res.resolve(); let j: J? = res.resolve(); let k: K? = res.resolve(); let l: L? = res.resolve(); let m: M? = res.resolve(); let n: N? = res.resolve(); let o: O? = res.resolve()
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!))
|
|
|
|
} as (Resolver) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, argument: Arg1.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- argument: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 1 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, Arg1>(_ service: Service.Type, name: String? = nil, argument arg1: Arg1.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O)) -> Service) -> ServiceEntry<Service> {
|
|
return self.register(service.self, name: name, factory: { res, arg1 in
|
|
let a: A? = res.resolve(argument: arg1); let b: B? = res.resolve(argument: arg1); let c: C? = res.resolve(argument: arg1); let d: D? = res.resolve(argument: arg1); let e: E? = res.resolve(argument: arg1); let f: F? = res.resolve(argument: arg1); let g: G? = res.resolve(argument: arg1); let h: H? = res.resolve(argument: arg1); let i: I? = res.resolve(argument: arg1); let j: J? = res.resolve(argument: arg1); let k: K? = res.resolve(argument: arg1); let l: L? = res.resolve(argument: arg1); let m: M? = res.resolve(argument: arg1); let n: N? = res.resolve(argument: arg1); let o: O? = res.resolve(argument: arg1)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!))
|
|
|
|
} as (Resolver, Arg1) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 2 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, Arg1, Arg2>(_ service: Service.Type, name: String? = nil, arguments arg1: Arg1.Type, _ arg2: Arg2.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O)) -> Service) -> ServiceEntry<Service> {
|
|
precondition(hasUnique(arguments: [arg1, arg2]), "Autoregistration of service with dynamic arguments of the same type (\(arg1), \(arg2)) is not supported")
|
|
return self.register(service.self, name: name, factory: { res, arg1, arg2 in
|
|
let a: A? = res.resolve(arguments: arg1, arg2); let b: B? = res.resolve(arguments: arg1, arg2); let c: C? = res.resolve(arguments: arg1, arg2); let d: D? = res.resolve(arguments: arg1, arg2); let e: E? = res.resolve(arguments: arg1, arg2); let f: F? = res.resolve(arguments: arg1, arg2); let g: G? = res.resolve(arguments: arg1, arg2); let h: H? = res.resolve(arguments: arg1, arg2); let i: I? = res.resolve(arguments: arg1, arg2); let j: J? = res.resolve(arguments: arg1, arg2); let k: K? = res.resolve(arguments: arg1, arg2); let l: L? = res.resolve(arguments: arg1, arg2); let m: M? = res.resolve(arguments: arg1, arg2); let n: N? = res.resolve(arguments: arg1, arg2); let o: O? = res.resolve(arguments: arg1, arg2)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!))
|
|
|
|
} as (Resolver, Arg1, Arg2) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self, Arg3.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 3 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, Arg1, Arg2, Arg3>(_ service: Service.Type, name: String? = nil, arguments arg1: Arg1.Type, _ arg2: Arg2.Type, _ arg3: Arg3.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O)) -> Service) -> ServiceEntry<Service> {
|
|
precondition(hasUnique(arguments: [arg1, arg2, arg3]), "Autoregistration of service with dynamic arguments of the same type (\(arg1), \(arg2), \(arg3)) is not supported")
|
|
return self.register(service.self, name: name, factory: { res, arg1, arg2, arg3 in
|
|
let a: A? = res.resolve(arguments: arg1, arg2, arg3); let b: B? = res.resolve(arguments: arg1, arg2, arg3); let c: C? = res.resolve(arguments: arg1, arg2, arg3); let d: D? = res.resolve(arguments: arg1, arg2, arg3); let e: E? = res.resolve(arguments: arg1, arg2, arg3); let f: F? = res.resolve(arguments: arg1, arg2, arg3); let g: G? = res.resolve(arguments: arg1, arg2, arg3); let h: H? = res.resolve(arguments: arg1, arg2, arg3); let i: I? = res.resolve(arguments: arg1, arg2, arg3); let j: J? = res.resolve(arguments: arg1, arg2, arg3); let k: K? = res.resolve(arguments: arg1, arg2, arg3); let l: L? = res.resolve(arguments: arg1, arg2, arg3); let m: M? = res.resolve(arguments: arg1, arg2, arg3); let n: N? = res.resolve(arguments: arg1, arg2, arg3); let o: O? = res.resolve(arguments: arg1, arg2, arg3)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!))
|
|
|
|
} as (Resolver, Arg1, Arg2, Arg3) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P>(_ service: Service.Type, name: String? = nil, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P)) -> Service) -> ServiceEntry<Service> {
|
|
return self.register(service.self, name: name, factory: { res in
|
|
let a: A? = res.resolve(); let b: B? = res.resolve(); let c: C? = res.resolve(); let d: D? = res.resolve(); let e: E? = res.resolve(); let f: F? = res.resolve(); let g: G? = res.resolve(); let h: H? = res.resolve(); let i: I? = res.resolve(); let j: J? = res.resolve(); let k: K? = res.resolve(); let l: L? = res.resolve(); let m: M? = res.resolve(); let n: N? = res.resolve(); let o: O? = res.resolve(); let p: P? = res.resolve()
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!, p!))
|
|
|
|
} as (Resolver) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, argument: Arg1.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- argument: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 1 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Arg1>(_ service: Service.Type, name: String? = nil, argument arg1: Arg1.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P)) -> Service) -> ServiceEntry<Service> {
|
|
return self.register(service.self, name: name, factory: { res, arg1 in
|
|
let a: A? = res.resolve(argument: arg1); let b: B? = res.resolve(argument: arg1); let c: C? = res.resolve(argument: arg1); let d: D? = res.resolve(argument: arg1); let e: E? = res.resolve(argument: arg1); let f: F? = res.resolve(argument: arg1); let g: G? = res.resolve(argument: arg1); let h: H? = res.resolve(argument: arg1); let i: I? = res.resolve(argument: arg1); let j: J? = res.resolve(argument: arg1); let k: K? = res.resolve(argument: arg1); let l: L? = res.resolve(argument: arg1); let m: M? = res.resolve(argument: arg1); let n: N? = res.resolve(argument: arg1); let o: O? = res.resolve(argument: arg1); let p: P? = res.resolve(argument: arg1)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!, p!))
|
|
|
|
} as (Resolver, Arg1) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 2 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Arg1, Arg2>(_ service: Service.Type, name: String? = nil, arguments arg1: Arg1.Type, _ arg2: Arg2.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P)) -> Service) -> ServiceEntry<Service> {
|
|
precondition(hasUnique(arguments: [arg1, arg2]), "Autoregistration of service with dynamic arguments of the same type (\(arg1), \(arg2)) is not supported")
|
|
return self.register(service.self, name: name, factory: { res, arg1, arg2 in
|
|
let a: A? = res.resolve(arguments: arg1, arg2); let b: B? = res.resolve(arguments: arg1, arg2); let c: C? = res.resolve(arguments: arg1, arg2); let d: D? = res.resolve(arguments: arg1, arg2); let e: E? = res.resolve(arguments: arg1, arg2); let f: F? = res.resolve(arguments: arg1, arg2); let g: G? = res.resolve(arguments: arg1, arg2); let h: H? = res.resolve(arguments: arg1, arg2); let i: I? = res.resolve(arguments: arg1, arg2); let j: J? = res.resolve(arguments: arg1, arg2); let k: K? = res.resolve(arguments: arg1, arg2); let l: L? = res.resolve(arguments: arg1, arg2); let m: M? = res.resolve(arguments: arg1, arg2); let n: N? = res.resolve(arguments: arg1, arg2); let o: O? = res.resolve(arguments: arg1, arg2); let p: P? = res.resolve(arguments: arg1, arg2)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!, p!))
|
|
|
|
} as (Resolver, Arg1, Arg2) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self, Arg3.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 3 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Arg1, Arg2, Arg3>(_ service: Service.Type, name: String? = nil, arguments arg1: Arg1.Type, _ arg2: Arg2.Type, _ arg3: Arg3.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P)) -> Service) -> ServiceEntry<Service> {
|
|
precondition(hasUnique(arguments: [arg1, arg2, arg3]), "Autoregistration of service with dynamic arguments of the same type (\(arg1), \(arg2), \(arg3)) is not supported")
|
|
return self.register(service.self, name: name, factory: { res, arg1, arg2, arg3 in
|
|
let a: A? = res.resolve(arguments: arg1, arg2, arg3); let b: B? = res.resolve(arguments: arg1, arg2, arg3); let c: C? = res.resolve(arguments: arg1, arg2, arg3); let d: D? = res.resolve(arguments: arg1, arg2, arg3); let e: E? = res.resolve(arguments: arg1, arg2, arg3); let f: F? = res.resolve(arguments: arg1, arg2, arg3); let g: G? = res.resolve(arguments: arg1, arg2, arg3); let h: H? = res.resolve(arguments: arg1, arg2, arg3); let i: I? = res.resolve(arguments: arg1, arg2, arg3); let j: J? = res.resolve(arguments: arg1, arg2, arg3); let k: K? = res.resolve(arguments: arg1, arg2, arg3); let l: L? = res.resolve(arguments: arg1, arg2, arg3); let m: M? = res.resolve(arguments: arg1, arg2, arg3); let n: N? = res.resolve(arguments: arg1, arg2, arg3); let o: O? = res.resolve(arguments: arg1, arg2, arg3); let p: P? = res.resolve(arguments: arg1, arg2, arg3)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!, p!))
|
|
|
|
} as (Resolver, Arg1, Arg2, Arg3) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q>(_ service: Service.Type, name: String? = nil, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q)) -> Service) -> ServiceEntry<Service> {
|
|
return self.register(service.self, name: name, factory: { res in
|
|
let a: A? = res.resolve(); let b: B? = res.resolve(); let c: C? = res.resolve(); let d: D? = res.resolve(); let e: E? = res.resolve(); let f: F? = res.resolve(); let g: G? = res.resolve(); let h: H? = res.resolve(); let i: I? = res.resolve(); let j: J? = res.resolve(); let k: K? = res.resolve(); let l: L? = res.resolve(); let m: M? = res.resolve(); let n: N? = res.resolve(); let o: O? = res.resolve(); let p: P? = res.resolve(); let q: Q? = res.resolve()
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!, p!, q!))
|
|
|
|
} as (Resolver) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, argument: Arg1.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- argument: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 1 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, Arg1>(_ service: Service.Type, name: String? = nil, argument arg1: Arg1.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q)) -> Service) -> ServiceEntry<Service> {
|
|
return self.register(service.self, name: name, factory: { res, arg1 in
|
|
let a: A? = res.resolve(argument: arg1); let b: B? = res.resolve(argument: arg1); let c: C? = res.resolve(argument: arg1); let d: D? = res.resolve(argument: arg1); let e: E? = res.resolve(argument: arg1); let f: F? = res.resolve(argument: arg1); let g: G? = res.resolve(argument: arg1); let h: H? = res.resolve(argument: arg1); let i: I? = res.resolve(argument: arg1); let j: J? = res.resolve(argument: arg1); let k: K? = res.resolve(argument: arg1); let l: L? = res.resolve(argument: arg1); let m: M? = res.resolve(argument: arg1); let n: N? = res.resolve(argument: arg1); let o: O? = res.resolve(argument: arg1); let p: P? = res.resolve(argument: arg1); let q: Q? = res.resolve(argument: arg1)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!, p!, q!))
|
|
|
|
} as (Resolver, Arg1) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 2 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, Arg1, Arg2>(_ service: Service.Type, name: String? = nil, arguments arg1: Arg1.Type, _ arg2: Arg2.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q)) -> Service) -> ServiceEntry<Service> {
|
|
precondition(hasUnique(arguments: [arg1, arg2]), "Autoregistration of service with dynamic arguments of the same type (\(arg1), \(arg2)) is not supported")
|
|
return self.register(service.self, name: name, factory: { res, arg1, arg2 in
|
|
let a: A? = res.resolve(arguments: arg1, arg2); let b: B? = res.resolve(arguments: arg1, arg2); let c: C? = res.resolve(arguments: arg1, arg2); let d: D? = res.resolve(arguments: arg1, arg2); let e: E? = res.resolve(arguments: arg1, arg2); let f: F? = res.resolve(arguments: arg1, arg2); let g: G? = res.resolve(arguments: arg1, arg2); let h: H? = res.resolve(arguments: arg1, arg2); let i: I? = res.resolve(arguments: arg1, arg2); let j: J? = res.resolve(arguments: arg1, arg2); let k: K? = res.resolve(arguments: arg1, arg2); let l: L? = res.resolve(arguments: arg1, arg2); let m: M? = res.resolve(arguments: arg1, arg2); let n: N? = res.resolve(arguments: arg1, arg2); let o: O? = res.resolve(arguments: arg1, arg2); let p: P? = res.resolve(arguments: arg1, arg2); let q: Q? = res.resolve(arguments: arg1, arg2)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!, p!, q!))
|
|
|
|
} as (Resolver, Arg1, Arg2) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self, Arg3.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 3 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, Arg1, Arg2, Arg3>(_ service: Service.Type, name: String? = nil, arguments arg1: Arg1.Type, _ arg2: Arg2.Type, _ arg3: Arg3.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q)) -> Service) -> ServiceEntry<Service> {
|
|
precondition(hasUnique(arguments: [arg1, arg2, arg3]), "Autoregistration of service with dynamic arguments of the same type (\(arg1), \(arg2), \(arg3)) is not supported")
|
|
return self.register(service.self, name: name, factory: { res, arg1, arg2, arg3 in
|
|
let a: A? = res.resolve(arguments: arg1, arg2, arg3); let b: B? = res.resolve(arguments: arg1, arg2, arg3); let c: C? = res.resolve(arguments: arg1, arg2, arg3); let d: D? = res.resolve(arguments: arg1, arg2, arg3); let e: E? = res.resolve(arguments: arg1, arg2, arg3); let f: F? = res.resolve(arguments: arg1, arg2, arg3); let g: G? = res.resolve(arguments: arg1, arg2, arg3); let h: H? = res.resolve(arguments: arg1, arg2, arg3); let i: I? = res.resolve(arguments: arg1, arg2, arg3); let j: J? = res.resolve(arguments: arg1, arg2, arg3); let k: K? = res.resolve(arguments: arg1, arg2, arg3); let l: L? = res.resolve(arguments: arg1, arg2, arg3); let m: M? = res.resolve(arguments: arg1, arg2, arg3); let n: N? = res.resolve(arguments: arg1, arg2, arg3); let o: O? = res.resolve(arguments: arg1, arg2, arg3); let p: P? = res.resolve(arguments: arg1, arg2, arg3); let q: Q? = res.resolve(arguments: arg1, arg2, arg3)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!, p!, q!))
|
|
|
|
} as (Resolver, Arg1, Arg2, Arg3) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R>(_ service: Service.Type, name: String? = nil, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R)) -> Service) -> ServiceEntry<Service> {
|
|
return self.register(service.self, name: name, factory: { res in
|
|
let a: A? = res.resolve(); let b: B? = res.resolve(); let c: C? = res.resolve(); let d: D? = res.resolve(); let e: E? = res.resolve(); let f: F? = res.resolve(); let g: G? = res.resolve(); let h: H? = res.resolve(); let i: I? = res.resolve(); let j: J? = res.resolve(); let k: K? = res.resolve(); let l: L? = res.resolve(); let m: M? = res.resolve(); let n: N? = res.resolve(); let o: O? = res.resolve(); let p: P? = res.resolve(); let q: Q? = res.resolve(); let r: R? = res.resolve()
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!, p!, q!, r!))
|
|
|
|
} as (Resolver) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, argument: Arg1.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- argument: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 1 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, Arg1>(_ service: Service.Type, name: String? = nil, argument arg1: Arg1.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R)) -> Service) -> ServiceEntry<Service> {
|
|
return self.register(service.self, name: name, factory: { res, arg1 in
|
|
let a: A? = res.resolve(argument: arg1); let b: B? = res.resolve(argument: arg1); let c: C? = res.resolve(argument: arg1); let d: D? = res.resolve(argument: arg1); let e: E? = res.resolve(argument: arg1); let f: F? = res.resolve(argument: arg1); let g: G? = res.resolve(argument: arg1); let h: H? = res.resolve(argument: arg1); let i: I? = res.resolve(argument: arg1); let j: J? = res.resolve(argument: arg1); let k: K? = res.resolve(argument: arg1); let l: L? = res.resolve(argument: arg1); let m: M? = res.resolve(argument: arg1); let n: N? = res.resolve(argument: arg1); let o: O? = res.resolve(argument: arg1); let p: P? = res.resolve(argument: arg1); let q: Q? = res.resolve(argument: arg1); let r: R? = res.resolve(argument: arg1)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!, p!, q!, r!))
|
|
|
|
} as (Resolver, Arg1) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 2 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, Arg1, Arg2>(_ service: Service.Type, name: String? = nil, arguments arg1: Arg1.Type, _ arg2: Arg2.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R)) -> Service) -> ServiceEntry<Service> {
|
|
precondition(hasUnique(arguments: [arg1, arg2]), "Autoregistration of service with dynamic arguments of the same type (\(arg1), \(arg2)) is not supported")
|
|
return self.register(service.self, name: name, factory: { res, arg1, arg2 in
|
|
let a: A? = res.resolve(arguments: arg1, arg2); let b: B? = res.resolve(arguments: arg1, arg2); let c: C? = res.resolve(arguments: arg1, arg2); let d: D? = res.resolve(arguments: arg1, arg2); let e: E? = res.resolve(arguments: arg1, arg2); let f: F? = res.resolve(arguments: arg1, arg2); let g: G? = res.resolve(arguments: arg1, arg2); let h: H? = res.resolve(arguments: arg1, arg2); let i: I? = res.resolve(arguments: arg1, arg2); let j: J? = res.resolve(arguments: arg1, arg2); let k: K? = res.resolve(arguments: arg1, arg2); let l: L? = res.resolve(arguments: arg1, arg2); let m: M? = res.resolve(arguments: arg1, arg2); let n: N? = res.resolve(arguments: arg1, arg2); let o: O? = res.resolve(arguments: arg1, arg2); let p: P? = res.resolve(arguments: arg1, arg2); let q: Q? = res.resolve(arguments: arg1, arg2); let r: R? = res.resolve(arguments: arg1, arg2)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!, p!, q!, r!))
|
|
|
|
} as (Resolver, Arg1, Arg2) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self, Arg3.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 3 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, Arg1, Arg2, Arg3>(_ service: Service.Type, name: String? = nil, arguments arg1: Arg1.Type, _ arg2: Arg2.Type, _ arg3: Arg3.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R)) -> Service) -> ServiceEntry<Service> {
|
|
precondition(hasUnique(arguments: [arg1, arg2, arg3]), "Autoregistration of service with dynamic arguments of the same type (\(arg1), \(arg2), \(arg3)) is not supported")
|
|
return self.register(service.self, name: name, factory: { res, arg1, arg2, arg3 in
|
|
let a: A? = res.resolve(arguments: arg1, arg2, arg3); let b: B? = res.resolve(arguments: arg1, arg2, arg3); let c: C? = res.resolve(arguments: arg1, arg2, arg3); let d: D? = res.resolve(arguments: arg1, arg2, arg3); let e: E? = res.resolve(arguments: arg1, arg2, arg3); let f: F? = res.resolve(arguments: arg1, arg2, arg3); let g: G? = res.resolve(arguments: arg1, arg2, arg3); let h: H? = res.resolve(arguments: arg1, arg2, arg3); let i: I? = res.resolve(arguments: arg1, arg2, arg3); let j: J? = res.resolve(arguments: arg1, arg2, arg3); let k: K? = res.resolve(arguments: arg1, arg2, arg3); let l: L? = res.resolve(arguments: arg1, arg2, arg3); let m: M? = res.resolve(arguments: arg1, arg2, arg3); let n: N? = res.resolve(arguments: arg1, arg2, arg3); let o: O? = res.resolve(arguments: arg1, arg2, arg3); let p: P? = res.resolve(arguments: arg1, arg2, arg3); let q: Q? = res.resolve(arguments: arg1, arg2, arg3); let r: R? = res.resolve(arguments: arg1, arg2, arg3)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!, p!, q!, r!))
|
|
|
|
} as (Resolver, Arg1, Arg2, Arg3) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S>(_ service: Service.Type, name: String? = nil, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S)) -> Service) -> ServiceEntry<Service> {
|
|
return self.register(service.self, name: name, factory: { res in
|
|
let a: A? = res.resolve(); let b: B? = res.resolve(); let c: C? = res.resolve(); let d: D? = res.resolve(); let e: E? = res.resolve(); let f: F? = res.resolve(); let g: G? = res.resolve(); let h: H? = res.resolve(); let i: I? = res.resolve(); let j: J? = res.resolve(); let k: K? = res.resolve(); let l: L? = res.resolve(); let m: M? = res.resolve(); let n: N? = res.resolve(); let o: O? = res.resolve(); let p: P? = res.resolve(); let q: Q? = res.resolve(); let r: R? = res.resolve(); let s: S? = res.resolve()
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!, p!, q!, r!, s!))
|
|
|
|
} as (Resolver) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, argument: Arg1.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- argument: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 1 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, Arg1>(_ service: Service.Type, name: String? = nil, argument arg1: Arg1.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S)) -> Service) -> ServiceEntry<Service> {
|
|
return self.register(service.self, name: name, factory: { res, arg1 in
|
|
let a: A? = res.resolve(argument: arg1); let b: B? = res.resolve(argument: arg1); let c: C? = res.resolve(argument: arg1); let d: D? = res.resolve(argument: arg1); let e: E? = res.resolve(argument: arg1); let f: F? = res.resolve(argument: arg1); let g: G? = res.resolve(argument: arg1); let h: H? = res.resolve(argument: arg1); let i: I? = res.resolve(argument: arg1); let j: J? = res.resolve(argument: arg1); let k: K? = res.resolve(argument: arg1); let l: L? = res.resolve(argument: arg1); let m: M? = res.resolve(argument: arg1); let n: N? = res.resolve(argument: arg1); let o: O? = res.resolve(argument: arg1); let p: P? = res.resolve(argument: arg1); let q: Q? = res.resolve(argument: arg1); let r: R? = res.resolve(argument: arg1); let s: S? = res.resolve(argument: arg1)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!, p!, q!, r!, s!))
|
|
|
|
} as (Resolver, Arg1) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 2 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, Arg1, Arg2>(_ service: Service.Type, name: String? = nil, arguments arg1: Arg1.Type, _ arg2: Arg2.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S)) -> Service) -> ServiceEntry<Service> {
|
|
precondition(hasUnique(arguments: [arg1, arg2]), "Autoregistration of service with dynamic arguments of the same type (\(arg1), \(arg2)) is not supported")
|
|
return self.register(service.self, name: name, factory: { res, arg1, arg2 in
|
|
let a: A? = res.resolve(arguments: arg1, arg2); let b: B? = res.resolve(arguments: arg1, arg2); let c: C? = res.resolve(arguments: arg1, arg2); let d: D? = res.resolve(arguments: arg1, arg2); let e: E? = res.resolve(arguments: arg1, arg2); let f: F? = res.resolve(arguments: arg1, arg2); let g: G? = res.resolve(arguments: arg1, arg2); let h: H? = res.resolve(arguments: arg1, arg2); let i: I? = res.resolve(arguments: arg1, arg2); let j: J? = res.resolve(arguments: arg1, arg2); let k: K? = res.resolve(arguments: arg1, arg2); let l: L? = res.resolve(arguments: arg1, arg2); let m: M? = res.resolve(arguments: arg1, arg2); let n: N? = res.resolve(arguments: arg1, arg2); let o: O? = res.resolve(arguments: arg1, arg2); let p: P? = res.resolve(arguments: arg1, arg2); let q: Q? = res.resolve(arguments: arg1, arg2); let r: R? = res.resolve(arguments: arg1, arg2); let s: S? = res.resolve(arguments: arg1, arg2)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!, p!, q!, r!, s!))
|
|
|
|
} as (Resolver, Arg1, Arg2) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self, Arg3.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 3 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, Arg1, Arg2, Arg3>(_ service: Service.Type, name: String? = nil, arguments arg1: Arg1.Type, _ arg2: Arg2.Type, _ arg3: Arg3.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S)) -> Service) -> ServiceEntry<Service> {
|
|
precondition(hasUnique(arguments: [arg1, arg2, arg3]), "Autoregistration of service with dynamic arguments of the same type (\(arg1), \(arg2), \(arg3)) is not supported")
|
|
return self.register(service.self, name: name, factory: { res, arg1, arg2, arg3 in
|
|
let a: A? = res.resolve(arguments: arg1, arg2, arg3); let b: B? = res.resolve(arguments: arg1, arg2, arg3); let c: C? = res.resolve(arguments: arg1, arg2, arg3); let d: D? = res.resolve(arguments: arg1, arg2, arg3); let e: E? = res.resolve(arguments: arg1, arg2, arg3); let f: F? = res.resolve(arguments: arg1, arg2, arg3); let g: G? = res.resolve(arguments: arg1, arg2, arg3); let h: H? = res.resolve(arguments: arg1, arg2, arg3); let i: I? = res.resolve(arguments: arg1, arg2, arg3); let j: J? = res.resolve(arguments: arg1, arg2, arg3); let k: K? = res.resolve(arguments: arg1, arg2, arg3); let l: L? = res.resolve(arguments: arg1, arg2, arg3); let m: M? = res.resolve(arguments: arg1, arg2, arg3); let n: N? = res.resolve(arguments: arg1, arg2, arg3); let o: O? = res.resolve(arguments: arg1, arg2, arg3); let p: P? = res.resolve(arguments: arg1, arg2, arg3); let q: Q? = res.resolve(arguments: arg1, arg2, arg3); let r: R? = res.resolve(arguments: arg1, arg2, arg3); let s: S? = res.resolve(arguments: arg1, arg2, arg3)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!, p!, q!, r!, s!))
|
|
|
|
} as (Resolver, Arg1, Arg2, Arg3) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T>(_ service: Service.Type, name: String? = nil, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T)) -> Service) -> ServiceEntry<Service> {
|
|
return self.register(service.self, name: name, factory: { res in
|
|
let a: A? = res.resolve(); let b: B? = res.resolve(); let c: C? = res.resolve(); let d: D? = res.resolve(); let e: E? = res.resolve(); let f: F? = res.resolve(); let g: G? = res.resolve(); let h: H? = res.resolve(); let i: I? = res.resolve(); let j: J? = res.resolve(); let k: K? = res.resolve(); let l: L? = res.resolve(); let m: M? = res.resolve(); let n: N? = res.resolve(); let o: O? = res.resolve(); let p: P? = res.resolve(); let q: Q? = res.resolve(); let r: R? = res.resolve(); let s: S? = res.resolve(); let t: T? = res.resolve()
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!, p!, q!, r!, s!, t!))
|
|
|
|
} as (Resolver) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, argument: Arg1.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- argument: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 1 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, Arg1>(_ service: Service.Type, name: String? = nil, argument arg1: Arg1.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T)) -> Service) -> ServiceEntry<Service> {
|
|
return self.register(service.self, name: name, factory: { res, arg1 in
|
|
let a: A? = res.resolve(argument: arg1); let b: B? = res.resolve(argument: arg1); let c: C? = res.resolve(argument: arg1); let d: D? = res.resolve(argument: arg1); let e: E? = res.resolve(argument: arg1); let f: F? = res.resolve(argument: arg1); let g: G? = res.resolve(argument: arg1); let h: H? = res.resolve(argument: arg1); let i: I? = res.resolve(argument: arg1); let j: J? = res.resolve(argument: arg1); let k: K? = res.resolve(argument: arg1); let l: L? = res.resolve(argument: arg1); let m: M? = res.resolve(argument: arg1); let n: N? = res.resolve(argument: arg1); let o: O? = res.resolve(argument: arg1); let p: P? = res.resolve(argument: arg1); let q: Q? = res.resolve(argument: arg1); let r: R? = res.resolve(argument: arg1); let s: S? = res.resolve(argument: arg1); let t: T? = res.resolve(argument: arg1)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!, p!, q!, r!, s!, t!))
|
|
|
|
} as (Resolver, Arg1) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 2 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, Arg1, Arg2>(_ service: Service.Type, name: String? = nil, arguments arg1: Arg1.Type, _ arg2: Arg2.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T)) -> Service) -> ServiceEntry<Service> {
|
|
precondition(hasUnique(arguments: [arg1, arg2]), "Autoregistration of service with dynamic arguments of the same type (\(arg1), \(arg2)) is not supported")
|
|
return self.register(service.self, name: name, factory: { res, arg1, arg2 in
|
|
let a: A? = res.resolve(arguments: arg1, arg2); let b: B? = res.resolve(arguments: arg1, arg2); let c: C? = res.resolve(arguments: arg1, arg2); let d: D? = res.resolve(arguments: arg1, arg2); let e: E? = res.resolve(arguments: arg1, arg2); let f: F? = res.resolve(arguments: arg1, arg2); let g: G? = res.resolve(arguments: arg1, arg2); let h: H? = res.resolve(arguments: arg1, arg2); let i: I? = res.resolve(arguments: arg1, arg2); let j: J? = res.resolve(arguments: arg1, arg2); let k: K? = res.resolve(arguments: arg1, arg2); let l: L? = res.resolve(arguments: arg1, arg2); let m: M? = res.resolve(arguments: arg1, arg2); let n: N? = res.resolve(arguments: arg1, arg2); let o: O? = res.resolve(arguments: arg1, arg2); let p: P? = res.resolve(arguments: arg1, arg2); let q: Q? = res.resolve(arguments: arg1, arg2); let r: R? = res.resolve(arguments: arg1, arg2); let s: S? = res.resolve(arguments: arg1, arg2); let t: T? = res.resolve(arguments: arg1, arg2)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!, p!, q!, r!, s!, t!))
|
|
|
|
} as (Resolver, Arg1, Arg2) -> Service)
|
|
}
|
|
|
|
/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.
|
|
|
|
Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self, Arg3.self), initializer: MyService.init`
|
|
- Parameters:
|
|
- service: Registered service type
|
|
- name: Optional name of the service
|
|
- arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency
|
|
- initializer: Initializer of the registered service
|
|
- Returns: The registered service entry with 3 arguments
|
|
- Important: Might fail if one of the dependencies is unresolvable.
|
|
*/
|
|
@discardableResult
|
|
func autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, Arg1, Arg2, Arg3>(_ service: Service.Type, name: String? = nil, arguments arg1: Arg1.Type, _ arg2: Arg2.Type, _ arg3: Arg3.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T)) -> Service) -> ServiceEntry<Service> {
|
|
precondition(hasUnique(arguments: [arg1, arg2, arg3]), "Autoregistration of service with dynamic arguments of the same type (\(arg1), \(arg2), \(arg3)) is not supported")
|
|
return self.register(service.self, name: name, factory: { res, arg1, arg2, arg3 in
|
|
let a: A? = res.resolve(arguments: arg1, arg2, arg3); let b: B? = res.resolve(arguments: arg1, arg2, arg3); let c: C? = res.resolve(arguments: arg1, arg2, arg3); let d: D? = res.resolve(arguments: arg1, arg2, arg3); let e: E? = res.resolve(arguments: arg1, arg2, arg3); let f: F? = res.resolve(arguments: arg1, arg2, arg3); let g: G? = res.resolve(arguments: arg1, arg2, arg3); let h: H? = res.resolve(arguments: arg1, arg2, arg3); let i: I? = res.resolve(arguments: arg1, arg2, arg3); let j: J? = res.resolve(arguments: arg1, arg2, arg3); let k: K? = res.resolve(arguments: arg1, arg2, arg3); let l: L? = res.resolve(arguments: arg1, arg2, arg3); let m: M? = res.resolve(arguments: arg1, arg2, arg3); let n: N? = res.resolve(arguments: arg1, arg2, arg3); let o: O? = res.resolve(arguments: arg1, arg2, arg3); let p: P? = res.resolve(arguments: arg1, arg2, arg3); let q: Q? = res.resolve(arguments: arg1, arg2, arg3); let r: R? = res.resolve(arguments: arg1, arg2, arg3); let s: S? = res.resolve(arguments: arg1, arg2, arg3); let t: T? = res.resolve(arguments: arg1, arg2, arg3)
|
|
checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t)
|
|
return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!, p!, q!, r!, s!, t!))
|
|
|
|
} as (Resolver, Arg1, Arg2, Arg3) -> Service)
|
|
}
|
|
|
|
|
|
}
|