Intereting Posts
Исходящее сообщение не отправляется Сделайте линейную компоновку, выбранную как элемент списка в виде списка (Android) DialogFragment – невозможно выполнить это действие после onSaveInstanceState Что такое `android.accounts.Account.type` ссылка? Java.net.UnknownHostException Невозможно разрешить хост «accounts.google.com»: нет адреса, связанного с именем хоста при вставке строк в bigquery Как программно настроить windowDrawsSystemBarBackgrounds? Продвигайте Android-устройство вверх Библиотека ActionBarSherlock полна ошибок после импорта В чем разница между андроидом: использование – разрешение и использование – разрешение? Программно скрыть / показать поддержку поддержки Android в TabLayout внутри AppBarLayout В андроиде, как сделать изображение расти с одной точки с помощью анимации? Проблема с двойной подсказкой TextInputLayout и EditText Отступ разделителя, игнорируя его Поиск в YouTube HTML5 видео по Android WebView Установите масштаб для веб-просмотра

Расширение ObjectGraph с помощью переопределяющего модуля

Сейчас я играю с кинжалом, и, видимо, некоторые функции не работают для меня.

Я на самом деле пытаюсь расширить ObjectGraph (через ObjectGraph.plus() ) с помощью модуля mock, который переопределяет один из реальных модулей в уже созданном графике. Но, по-видимому, мой макет-модуль игнорируется, поэтому называются реальные интерфейсы.

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

В моем случае MockModule1 переопределяет поставщиков из RealModule1

Не работает :

 objectGraph = ObjectGraph.create(new RealModule1(), new RealModule2(), new RealModule3()); objectGraph = objectGraph.plus(new MockModule1()); 

Работает отлично

 objectGraph = ObjectGraph.create(new RealModule1(), new RealModule2(), new RealModule3(), new MockModule1()); 

RealModule1.java

 @Module(injects = MainActivity.class) public class RealModule1 { @Provides ISomething provideSomething() { return new Something(); } } 

MockModule1.java

 @Module(overrides=true, injects = MainActivity.class) public class MockModule1 { @Provides ISomething provideSomething() { return new MockSomething(); } } 

Я что-то упускаю?

Solutions Collecting From Web of "Расширение ObjectGraph с помощью переопределяющего модуля"

.plus() является объединением двух объектных графов. Первый из них предоставляется как точка расширения, а право неявно создается с помощью экземпляров модулей переданных модулей.

overrides=true позволяет модулю переопределять другие зависимости, предоставляемые внутри одного и того же графа объектов.

Переопределение не будет работать при расширении графа объектов, потому что на самом деле это не будет переопределение (по крайней мере, не так, как мы его определяем). Внутри мы слабо ссылались на поведение, которое вы описываете как «затенение», и это то, что в настоящее время не поддерживается кинжалом с ожидающим выпуском версии v1.2.