我正在使用library(示例为假设,以简化问题,但实质上保持不变)包装谷歌地图,比如谷歌地图的装饰师,并添加MarkerManager,删除标记等。
//库
Microsoft.TeamFoundation.Build.Workflow.dll
在应用中,我想使用自己的import com.google.android.gms.maps.GoogleMap;
public class DelegatingGoogleMap {
GoogleMap map;
MarkerManager manager;
public class DelegatingGoogleMap(GoogleMap map){
this.map = map;
this.manager = new MarkerManager(map);
}
}
import com.google.android.gms.maps.GoogleMap;
public class MarkerManager {
public class GoogleMap map;
public class MarkerManager(GoogleMap map) {
this.map = map;
}
}
//应用
MarkerManager's
所以我想使用Dagger 2将MarkerManagerExtended注入DelegatingGoogleMap(属性注入)。
public class MarkerManagerExtended extends MarkerManager {
public class MarkerManager(GoogleMap map) {
super(map);
}
}
不确定,Dagger在这种情况下使用是个好主意。
问题是,public class DelegatingGoogleMap {
GoogleMap map;
@Inject
MarkerManager manager;
public class DelegatingGoogleMap(GoogleMap map){
this.map = map;
}
}
要提供Module
的实例,我必须将com.google.android.gms.maps.GoogleMap传递给构造函数。
MarkerManagerExtended
获取GoogleMaps看起来并不容易,所以我不确定是否应该在 @Module
public class MapModule {
@Provides
public MarkerManager providesMarkerManager() {
return new MarkerManagerExtended(map); //map instance of com.google.android.gms.maps.GoogleMap
}
}
中写这个。
Module
如何将MarkerManager注入DelegatingGoogleMap?