I have run into the same issue and found this article.
In a nutshell you have this options:
- Make not generic wrapper class containing injected fields, make it to be a field of your class and inject it instead of generic class itself.
- Inject child non-generic class instead of base class. All annotated with @Inject fields of base class will be also injected, but they have to be public/protected that is not good.
- Make annotated with @Inject setter in the base class and private field. Injecting child non-generic class will lead to triggering the setter with parameter got from the object graph.