Sorry about the delete/repost. 
I hate the fact that you can't edit your posts (even for like 5 minutes) on 
Google Groups!


On Monday, June 24, 2013 11:52:24 AM UTC-4, [email protected] wrote:
>
> Thanks for the idea Sam.
>
> Actually, I found another solution which works great in my situation. I 
> had this idea by looking at the code for the assisted factories, 
> com.google.inject.
> assistedinject
> .FactoryProvider2 in particular.
>
> - The modules bind instances of Class<? extends ISomeInterface> (it's a 
> little bit more complex then that, as they actually bind wrapper objects 
> with a name (a String) in addition to the Class itself)
> - I have an object "MyMetaFactory" that has a constructor that is injected 
> with the Set<Class<? extends ISomeInterface>> from the multibinding, and 
> with the Injector itself.
> - In this MyMetaFactory's constructor, I create a *child injector* using 
> an anonymous Module which creates assisted factories for each of the 
> ISomeInterfaces.
> - All assisted factories, created using the child injector, are stored in 
> a MyMetaFactory's local variable. So when the MyMetaFactory's constructor 
> exits, all the required assisted factories are created.
> - Then, the rest of the code will use MyMetaFactory to get an instance of 
> the particular ISomeInterface they need (by passing its "name", remember 
> that was also multibinded!). MyMetaFactory will uses the appropriate 
> assisted factory to create the instance.
>
> I'm pretty happy with this pattern (How do you call it? The 
> "AssistedInject Multibindings" pattern ?)
>

-- 
You received this message because you are subscribed to the Google Groups 
"google-guice" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/google-guice.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to