2012-04-13 1 views
1

У меня вопрос о привязке в Guice.Guice, связывающий два разных класса с тем же интерфейсом с аннотацией

У меня есть два класса (MyClass1 и MyClass2), оба реализуют один и тот же интерфейс, скажем: IMyInteface.

Я получил связывание сконфигурирован как:

связывания (IMyInterface.class) .annotatedWith (Class1.class) .to (MyClass1.class); bind (IMyInterface.class) .annotatedWith (Class2.class) .to (MyClass2.class);

Класс 1 и класс 2 обозначаются аннотациями.

Теперь, если я использую этот код клиента:

Injector injector = Guice.createInjector(new MyModule()); 
    IMyInterface c = injector..getInstance(IMyInterface.class); 

Guice не будет знать, реализация которых я хочу иметь для IMyInterface. В любом случае я могу указать аннотацию на этом этапе, чтобы выборочно сказать: «Я хочу реализовать MyClass2?

Большое спасибо

ответ

2

Я думаю, что вы можете сделать:

injector.getInstance(Key.get(IMyInterface.class, Class2.class)); 

Edit: Там, как представляется, подобный вопрос с подобным ответом here.

+0

Большое спасибо. Оно работает :) – Kevin

Смежные вопросы