Skip to content
This repository has been archived by the owner on Aug 24, 2022. It is now read-only.
/ Swilby Public archive

A light-weight Dependency Injection Container on based Assembly

Notifications You must be signed in to change notification settings

bartleby/Swilby

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Swilby

A light-weight Dependency Injection Container on based Assembly

Example:

class SomeModuleAssembly: Assembly {
    func build() -> String {
        let service = container.resolve(SomeServiceAssembly.self).build()
        return "SomeModule with service: \(service)"
    }
}
class SomeServiceAssembly: Assembly {
    func build() -> String {
        return "Some Service"
    }
}
let factory: AssemblyFactoryProtocol = AssemblyFactory()
let container: LightContainer = DependencyContainer(assemblyFactory: factory)
        
container.apply(SomeModuleAssembly.self)
container.apply(SomeServiceAssembly.self)
        
let result = container.resolve(SomeModuleAssembly.self).build()
print(result) // SomeModule with service: Some Service

Weak Box

class SomeServiceAssembly: Assembly {
    func build() -> String {
        return weakBox {
            return "Some Service"
        }
    }
}
// create new SomeService
let someService = container.resolve(SomeServiceAssembly.self).build()

// make link to someService, like someService2 = someService
let someService2 = container.resolve(SomeServiceAssembly.self).build()

someService = nil // SomeService will not be released
someService2 = nil // SomeService will now be released

Strong Box (like singleton)

class SomeServiceAssembly: Assembly {
    func build() -> String {
        return strongBox {
            return "Some Service"
        }
    }
}
// create new SomeService
let someService = container.resolve(SomeServiceAssembly.self).build()

// make link to someService, like someService2 = someService
let someService2 = container.resolve(SomeServiceAssembly.self).build()

someService = nil // SomeService will not be released
someService2 = nil // SomeService will still not be released because it is singelton

// you can get a link to a instanse of singelton
let someService = container.resolve(SomeServiceAssembly.self).build()

About

A light-weight Dependency Injection Container on based Assembly

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages