Ich habe einen Anwendungsfall, die die Notwendigkeit, um anzuzeigen, scheint so etwas wie scope.removeModules(...)
in der Toothpick DI Bibliothek haben.Gibt es eine Möglichkeit, ein Modul zu einem Scope in einer Toothpick DI-Bibliothek hinzuzufügen?
In einer Android-Anwendung habe ich ein Modul, das eine Bindung an die Klasse erstellt, die mit einem Server über eine Retrofit-Bibliothek-Schnittstelle kommuniziert. Die eigentliche Server-URL wird zum Zeitpunkt dieser Klasse Schöpfung festgelegt und wird deshalb als Modul Konstruktor Parameter geliefert:
class NetworkModule(serverUrl: String) {
init {
bind(MyServerApi::class.java).toInstance(createMyApi(serverUrl));
}
}
Jetzt ist das Problem, dass dieses Modul eine App weit eine und muss zu einer Anwendung hinzugefügt werden Geltungsbereich (Root-Bereich), ABER serverUrl
kann später vom Benutzer neu konfiguriert werden. Das bedeutet, dass MyServerApi
muss neu erstellt werden. Und es scheint, als wäre es großartig, wenn man das ganze Modul einfach entfernen und wieder zum Wurzelbereich hinzufügen könnte, sobald die URL geändert wurde.
Auf diese Weise ganz App wird noch in der Lage seine Toothpick.openScope(getApplication())
zu tun und Zugriff auf die neueste konfigurierte Instanz der MyServerApi
auf die richtigen serverUrl
sprechen zu bekommen.
Ich frage mich, ob ich einige Design-Wahl von dieser Bibliothek, die das obige möglich machen würde ohne die Methode in die Bibliothek zu vermissen vermissen?
Diese Technik ein Fluss Rahmen genannt wird, können Sie ein Beispiel finden: https://github.com/stephanenicolas/toothpick/blob/d39ff12d0b8a1acd7f00c87b29e9a37fbdda9da0/smoothie-sample/src/main/java/com/example/smoothie/RxMVPActivity .java: Diese Aktivität definiert einen Bereich, der die Rotation überlebt. Sehen Sie sich das praktische Annotationssystem an, um es zu erreichen. – Snicolas
Danke, ich habe es so gemacht. Unter "toothpick-di" auch noch eine Frage gepostet, würde mich freuen wenn du es dir anschaust wenn du Zeit hast. In Bezug auf die In-Modul-Abhängigkeitsauflösung. Von Dagger kommend bin ich ein bisschen verloren – dimsuz