uber / needle

Compile-time safe Swift dependency injection framework
Apache License 2.0
1.84k stars 144 forks source link

public properties #464

Open nurk02 opened 1 year ago

nurk02 commented 1 year ago

Hello! i enjoy using this framework and huge thanks to you for it. there is an issue we faced in our team while using it. I guess from some version of needle you have to change properties(child components) in component as public. Otherwise needle wouldn't be able to see dependency providers. Please update information about it in readme and other documentations.

Example:

final class RootComponent: BootstrapComponent {

//if it is only var someService: SomeServiceType (as internal) it won't work public var someService: SomeServiceType { let provider = MoyaProvider(plugins: [NetworkLoggerPlugin()]) return SomeServiceType(provider: provider) }

//if it is only var someTracker: SomeServiceType (as internal) it won't work public var someTracker: SomeTracker { return shared { SomeTrackerImpl(storage: UserDefaultsStorage(), rootModuleBuilder: self, someService: someService) } }

Thank you. would be thankful if you mention me somewhere in this repo. Wish you all the best! :)

shreesha-kedilaya commented 1 year ago

Even i faced it. Is this a fix for some issue in the framework? Even i wouldn't like to use public for the dependencies used inside the same module.

maiyama18 commented 1 year ago

I've just started using needle and ran into the same issue, which was quite troublesome. Personally, I agree that I don’t want to use 'public' for use within the same module. But for the time being, I think it would be helpful if the documentation stated that 'public' should be used for the dependencies, to save time for new users.

xezero commented 9 months ago

459 This looks like the exact commit that completely changed how we're supposed to use Needle.