A swift library to inject your dependencies via property wrappers
?
DependencyInjection
A library to inject your dependencies via property wrappers
?
Features
DependencyInjection allows you to define the dependencies of your app. It exposes a property wrapper to make easier the injection in your instances. Every instance can be resolved at three different levels:
instance
: Resolves a unique instance across the entire appshared
: Resolves the instance and allows it to be reused if it is needed on another objectglobal
: The instance will act as a singleton
?
Usage
There are two separate steps when using DependencyInjection
Register dependecies
let module: Module = {
instance(TypeAContract.self, TypeA.self)
shared(TypeBContract.self, TypeB.self)
global(TypeCContract.self, TypeC.self)
}
startInjection {
registerModules(module)
}
Injecting instance
To inject an instance you can just use the property wrapper:
protocol Definition: Injectable {}
class Implementation: Definition {}
@Injected var instance: Definition // It will be Implementation
?
Compatibility
This library can be used on iOS, macOS, iPadOS, watchOS and tvOS as it only relies on Foundation framework
⚙️
Installation
You can use the Swift Package Manager by declaring DependencyInjection as a dependency in your Package.swift
file:
.package(url: "https://github.com/AlbGarciam/DependencyInjection", from: "0.1.0")
DependencyInjection
exposes 2 versions of the library, a static
and a dynamic
version.
?
Etc.
- Contributions are very welcome.
- Attribution is appreciated (let’s spread the word!), but not mandatory.
??
Author
Alberto García – @AlbGarciam
?♂️
License
DependencyInjection is available under the MIT license. See the LICENSE file for more info.