Google Auto Factory / Dagger Integration:对注入代码的依赖性

时间:2014-08-02 22:54:25

标签: java android guice dagger

似乎Dagger根本没有解释如何处理提供/管理自动生成的代码,例如Google Auto Factory创建的代码。此外,Google Auto的人员并没有真正解释如何与Dagger进行整合,因此对于像我这样的人来说,如果没有关于两个库如何工作的非常高级的知识,这会让他们感到痛苦。

我所看到的问题是,当您没有为Google Auto Factory生成的工厂提供完全合格的名称时,Dagger根本不会接受它们。但是,提供完全合格的工厂名称将允许Dagger正确地将所有内容链接在一起。

我的问题是,这是更多的一般/无证问题,而使用Dagger可能会遇到或者应该在两个库中修复的错误?

使用:

@Module(
        library = true,
        complete = false
    )
public class FactoryModule {

    @Provides
    MembersAdapterFactory provideMembersAdapterFactory(
        me.magneto.groups.adapters.MembersAdapterFactoryImpl membersAdapterFactory) {
        return membersAdapterFactory;
    }

}

失败:

import me.magneto.groups.adapters.MembersAdapterFactoryImpl;

@Module(
          library = true,
          complete = false
       )
public class FactoryModule {

    @Provides
    MembersAdapterFactory provideMembersAdapterFactory(
        MembersAdapterFactoryImpl membersAdapterFactory) {
        return membersAdapterFactory;
    } 
}

工厂:

public interface MembersAdapterFactory {

    public MembersAdapter make(
                       Context context, int resource, List<Member> members);

}



@AutoFactory(
    className = "MembersAdapterFactoryImpl",
    implementing = { MembersAdapterFactory.class }
)
public class MembersAdapter extends ArrayAdapter<Member> {


    private MembersAdapterHelper mMembersAdapterHelper;


    MembersAdapter(@Provided MembersAdapterHelper membersAdapterHelper,
                   Context context,
                   int resource,
                   List<Member> members) {
        super(context, resource, members);
        mMembersAdapterHelper = membersAdapterHelper;
    }
}

0 个答案:

没有答案