2013-09-23 3 views
2

Каков самый простой способ иметь какой-либо DI в приложении RCP? мне нужно зарегистрировать зависимости и использовать их в различных частях приложения: колдунов, диалогах, свойства страниц и т.д.Eclipse RCP избегает одиночных игр

Что у меня есть: продукт с кучей плагинов.

Что мне нужно: при запуске продукта Eclipse RCP мне нужно прочитать некоторые файлы, хранить эти данные в памяти и сделать его подъезд к различным элементам пользовательского интерфейса (среди различных плагинов) без использования одиночек.

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

ответ

5

Eclipse 4.3 поддерживает DI. Это лучше всего подходит для RCP, созданного как чистая программа Eclipse 4, которая не использует код совместимости Eclipse 3 (режим «e4»). Объекты, которые определены в новой модели приложения, создаются с использованием DI, но также возможно создавать другие объекты (например, диалоги) с использованием инъекции.

Для введения в Eclipse, 4 RCP см http://www.vogella.com/articles/EclipseRCP/article.html

Для 3 приложения Eclipse, часть может получить контекст Eclipse, необходимый для инъекции с использованием

IWorkbenchPartSite site = part.getSite(); 
IEclipseContext parentContext = (IEclipseContext) site.getService(IEclipseContext.class); 

Использования org.eclipse.e4.core.contexts.ContextInjectionFactory для инъекций.

+0

Отлично. На самом деле, мое приложение работает в Eclipse 4.3 в настоящее время, но весь код был написан для Eclipse 3.5. Могу ли я зарегистрировать свои собственные компоненты в контексте в этом случае? – vacuum

+0

См. Отредактированный ответ –

0

Или, если вы все еще используете приложение Eclipse 3, вы можете использовать реестр плагинов Eclipse для определения точек расширения и расширений. Это также относится к инъекции зависимостей, без инъекции :-)

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