Dagger 2注入什么,不注入什么

时间:2019-10-15 22:30:28

标签: android kotlin dagger-2

我已经阅读了几个小时,但找不到答案。我应该注入什么东西而不是什么?

我的LoginViewModel带有一些注入的依赖项,但是我不确定是必须注入我的User数据类(在其他数据类中)还是将其实例化。

LoginViewModel.kt

class LoginViewModel @Inject constructor(
    private val loginRepositoryImpl: LoginRepositoryImpl,
    private val baseApplication: BaseApplication,
    private val networkUtils: NetworkUtils,
    private val sharedPreferences: SharedPreferences) : ViewModel() {

    fun processLogin(username: String, password: String) {
        val user = User(username, password)
        ...
    }
    ...
}

User.kt

data class User (
    @SerializedName("usuario")
    var user: String,
    @SerializedName("clave")
    var password: String = "",
    @SerializedName("nombre")
    var name: String = ""
)

2 个答案:

答案 0 :(得分:0)

取决于您使用Dagger的原因。假设您要测试以下代码。 loginRepositoryImpl可能正在通过网络访问身份验证服务,因此您想提供一个替代实现。用户只是一个数据类,提供模拟实现没有任何价值。

    fun processLogin(username: String, password: String): Boolean {
        val user = User(username, password)
        val isValidLogin = loginRepositoryImpl.login(user)
        return isValidLogin
        ...
    }

答案 1 :(得分:0)

伙伴,您不需要注入用户数据,为什么注入基本应用程序听起来不正确