2009-05-10 26 views
1

Eine meiner XPCOM Komponenten verwendet andere XPCOM Komponenten. Als ich es getestet habe, fand ich es umständlich wegen der Abhängigkeiten. Dann dachte ich an Dependency Injection, um die anderen Komponenten in meinem Konstruktor zu übergeben. Ich war nicht erfolgreich. Ist es möglich, Referenzen anderer Komponenten in Ihren Konstruktor einzubinden?Dependency Injection in XPCOM

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

Zum Beispiel braucht foo Komponente bar. Kann ich über den Konstruktor von foo in bar gehen? Ich habe das obige versucht, aber es hat nicht funktioniert.

Zan

Antwort

1

Ist es möglich, in den Referenzen von anderen Komponenten in Ihrem Konstruktor übergeben?

Nein. Der Parameter zu createInstance ist eine Schnittstelle; .createInstance(interface) ist eine Abkürzung für .createInstance().QueryInterface(interface).

Die Antwort auf Ihr Problem liegt in dem Bereich, den Sie in der Frage nicht beschrieben haben - wahrscheinlich müssen Sie nicht auf die andere Komponente von Ihrem "Konstruktor" zugreifen, oder Sie stolperten über ein Problem, das Sie beheben konnten stattdessen "sperriges cos der Abhängigkeiten" und weitergezogen.