Hello! I need to override some bindings in a child injector. I can't
use Modules.overrides because I don't know about list of modules which
had been used during parent injector creating. For example:

    public static void main(String[] args) {
        Injector injector = Guice.createInjector(new AbstractModule()
{
            @Override
            protected void configure() {
                bind(IContainer.class).to(ContainerImpl.class);

                bind(IChild.class).to(ChildImpl.class);
            }
        });

        IContainer container = injector.getInstance(IContainer.class);

        container.createNewChild();
    }


interface IChild {}

class ChildImpl implements IChild {
    @Inject
    ChildImpl(Container parentContainer) {
        // parentContainer should pointed on container object which
had created this object! It should no be a new instance of
ContainerImpl class!
    }
}

interface IContainer {
    IChild createNewChild();
}

class ContainerImpl implements IContainer {
    private final Injector injector;

    @Inject
    ContainerImpl(Injector injector) {
        this.injector = injector;
    }

    public IChild createNewChild() {
        Injector childInjector = injector.createChildInjector(new
AbstractModule() {
            @Override
            protected void configure() {
                bind(IContainer.class).to(ContainerImpl.class); // Not
works!
            }
        });

        return childInjector.getInstance(IChild.class);
    }
}




-- 
You received this message because you are subscribed to the Google Groups 
"google-guice" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-guice?hl=en.

Reply via email to