LiteCode / SwiftDI

SwiftDI the new way to use your dependency in Swift 5.1
MIT License
112 stars 6 forks source link

Add ability to not inject lazily #5

Open AKoulabukhov opened 4 years ago

AKoulabukhov commented 4 years ago

Currently @Inject works lazily always. It means that object isn’t injected in fact until first call. It can lead to unexpected behavior. For example you have some broadcasting object which performs logic in init() method and inject it on a root level. Then you try to observe some changes but this object still isn’t created.

The proposal is to add an option to propertyWrapper or registration methods to make this behavior configurable.

SpectralDragon commented 4 years ago

I agree with you, that is bad and LazyInit was an easy solution to avoid a recursive init for nested objects. Thanks for the issue and for example, it’ll help me to fix this.