Skip to content

Instantly share code, notes, and snippets.

@darrarski
Created July 18, 2018 22:14
Show Gist options
  • Save darrarski/914e3a1f76dacd67ad67027c997bf370 to your computer and use it in GitHub Desktop.
Save darrarski/914e3a1f76dacd67ad67027c997bf370 to your computer and use it in GitHub Desktop.
NamedRegistration helper for Swinject
import Swinject
struct NamedRegistration<Service> {
let service: Service.Type
let name: String
}
extension NamedRegistration {
static func named<Service>(_ name: String) -> NamedRegistration<Service> {
return NamedRegistration<Service>(service: Service.self, name: name)
}
}
extension Container {
func register<Service>(_ registration: NamedRegistration<Service>, factory: @escaping (Resolver) -> Service) {
register(registration.service, name: registration.name, factory: factory)
}
}
extension Resolver {
func resolve<Service>(_ registration: NamedRegistration<Service>) -> Service? {
return resolve(registration.service, name: registration.name)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment