Внедрение зависимостей в XPCOM - PullRequest
1 голос
/ 10 мая 2009

Один из моих компонентов XPCOM использует другие компоненты XPCOM. Когда я проверял это, я нашел это громоздким из-за зависимостей. Затем я подумал об использовании Dependency Injection для передачи других компонентов моего конструктора. Я не был успешным. Можно ли передать ссылки на другие компоненты в ваш конструктор?

 var _foo = Components.classes["@foo.com/foo;1"].createInstance(bar);
 this.foo = _foo.QueryInterface(Components.interfaces.IFoo);

Например, компоненту foo нужна панель. Могу ли я пройти в баре через конструктор foo? Я пробовал выше, но это не сработало.

Зан

1 Ответ

1 голос
/ 16 октября 2009

Можно ли передать ссылки на другие компоненты в ваш конструктор?

Нет. Параметр createInstance является интерфейсом; .createInstance(interface) является ярлыком для .createInstance().QueryInterface(interface).

Ответ на вашу проблему лежит в области, которую вы не описали в вопросе - скорее всего, вам не нужен доступ к другому компоненту из вашего «конструктора», или вы наткнулись на проблему, которую можете исправить, но вместо "громоздкий cos зависимостей" и пошел дальше.

...