2017-08-22 18 views
0

ダガーグラフをKotlinに移行させないKotlinのDagger 2 @Named注釈を使用する際に問題が発生しました。この問題は、Daggerモジュールメソッドに@Namedパラメータを注入する必要がある場合に発生します。この場合、私はコンストラクタまたはフィールドを介してそれを注入していません。私はすべてKotlin annotation use-sites targetsを試しましたが、どれもメソッドパラメータで動作していないようです。してください、どのような解決策も非常に高く評価されます。以下は、一度コンパイルされませんKotlinに変換するJavaコードの部分がある:あなたが関数のパラメータを扱っているので、Kotlin + Dagger2モジュールプロバイダーメソッドの使用で@Namedアノテーション

@Module 
public final class MyModule { 

    (...) 

    @Provides 
    @Singleton 
    LoginStore provideLoginStore(@Named("main_dao_session") DaoSession mainDaoSession, @Named("demo_dao_session") DaoSession demoDaoSession) { 
     return new LoginStoreImpl(mainDaoSession, demoDaoSession); 
    } 

    (...) 

} 
+0

を多分これは役立つかもしれない:https://github.com/google/dagger/issues/761またはこれを:https://stackoverflow.com/ a/36211005/6507689 –

+0

いいえ、最初のものは不完全で、https://github.com/google/dagger/issues/668を参照してください。これは、@名前付きの問題に関連するとは本当に思いません。 1つは関数のパラメータではなく、フィールドでのその使用法に関するものです。 –

答えて

0

利用サイトのターゲットは、この場合には適用されません。各コンストラクタパラメータのバックグラウンドで多くのコードが生成されるため、ターゲットをコンストラクタで指定する必要があります。通常どおり

だけで注釈を使用します。

@Provides 
@Singleton 
fun provideLoginStore(@Named("main_dao_session") mainDaoSession: DaoSession, @Named("demo_dao_session") demoDaoSession: DaoSession): LoginStore { 
    return LoginStoreImpl(mainDaoSession, demoDaoSession) 
} 
+0

これは私が最初に試した結果ではありませんが、私は再度確認します。ありがとう! –

+0

これまでにソリューションを試してみましたか? –

+0

私はあなたが行った小さなPOCであなたのソリューションをテストしました。私はなぜこの前回のことができなかったのか分かりません。ありがとう! –

関連する問題