Внедрить взгляды в другие взгляды с Джином - PullRequest
0 голосов
/ 06 января 2012

Я использую архитектуру MVP (или, по крайней мере, приблизительную единицу) и имею иерархию презентаторов с аналогично вложенными представлениями. Я буду придерживаться первых двух уровней для простоты:

AppPresenter / AppView на верхнем уровне. DocumentListPresenter / DocumentListView и TranslationPresenter / TranslationView на втором уровне.

Два представления второго уровня добавляются в панель на представлении верхнего уровня как виджеты, но в настоящий момент это делается путем введения двух докладчиков второго уровня в докладчик верхнего уровня, а затем с помощью докладчика верхнего уровня, передающего их представления. к его представлению через методы установки.

Это похоже на обходной путь. Возможно ли с помощью Gin внедрить представления второго уровня в представление верхнего уровня без участия докладчиков вообще?

1 Ответ

0 голосов
/ 09 января 2012

Мне удалось заставить это работать с небольшим изменением кода guice (переопределено в моем локальном классе, который расширяет AbstractPresenterModule:

@Override
protected <D extends Display> void bindDisplay(Class<D> display, Class<? extends D> displayImpl)
{
   bind(display).to(displayImpl).in(Singleton.class);
}

Метод bindPresenter (), который я использовал, связывает докладчикакак singleton, и вызывает bindDisplay (), чтобы связать интерфейс дисплея с его реализацией, но последний не является одноэлементной привязкой, поэтому я столкнулся с разными экземплярами (один связан с презентатором, другой связан с содержащим классом дисплея).

Переопределение метода bindDisplay () для привязки дисплея к одиночному гарантирует, что реализация дисплея, внедренная в другой дисплей, является тем же экземпляром, к которому привязан докладчик.

...