Donc, d'après mes tests, si vous avez quelque chose comme:Comment soustraire une liaison en utilisant un remplacement de module Guice?
Module modA = new AbstractModule() {
public void configure() {
bind(A.class).to(AImpl.class);
bind(C.class).to(ACImpl.class);
bind(E.class).to(EImpl.class);
}
}
Module modB = New AbstractModule() {
public void configure() {
bind(A.class).to(C.class);
bind(D.class).to(DImpl.class);
}
}
Guice.createInjector(Modules.overrides(modA, modB)); // gives me binding for A, C, E AND D with A overridden to A->C.
Mais si vous voulez supprimer la liaison E dans Modb? Je n'arrive pas à trouver un moyen de le faire sans avoir à casser la liaison pour E dans un module séparé. Y a-t-il un moyen?
Juste une idée stupide, peut-être, mais avez-vous essayé bind (E.class) .pour (E.class)? (Pouvez-vous même lier une interface à une autre interface?) –
Oui, vous pouvez lier indéfiniment une liaison à une autre liaison, tant que le point final d'une liaison pointe vers une classe ou un fournisseur concret. Comme pour lier (E.class) .to (E.class), j'ai déposé un bug à ce sujet il y a 3 ans et il sortira en 2.1. http://code.google.com/p/google-guice/issues/detail?id=171 –