2014-10-05 18 views
1

除非在圖中的單對象與限定符註解我們就可以撥打電話:獲取對象從匕首圖形標註有資格

graph.get(Bus.class); 

如果此對象與預選賽模塊定義註釋,然後它會拋出IllegalStateException異常。

有從圖中獲取該對象不是一個更好的辦法:

public class BusWrapper { 
    @Inject 
    @MyQualifier 
    Bus bus; 
} 

graph.inject(new BusWrapper()).bus; 

我有一組的圖表(一個圖表爲每個帳戶)。每個帳戶圖表和一個應用程序範圍的總線(用不同的限定符註釋)分開的總線。 一旦我收到GCM同步請求消息,我需要從正確的圖表中檢索總線以傳遞同步請求。

+0

想想我會創建並提供一個BusFactory併爲每個總線關聯一個ID /名稱。然後,當GCM到達時,執行像'busFactory.getBusByName('nameOfBus')這樣的操作。' – cYrixmorten 2014-10-05 16:11:04

+0

@cYrixmorten這不是安全的或靜態可分析的,所有這些都是Dagger和合格注入提供的。 – 2014-10-05 17:38:42

+0

這個代碼裏面的對象是什麼,它不能直接注入所有合格的'Bus'實例,然後在它們之間切換/ ifelse? – 2014-10-05 17:40:12

回答

3

不支持通過.get()執行帶註釋的實例查找。

我找不到一個很好的參考文章來引用。最接近的是this one

匕首1.0絕對是圍繞具有強大的入口點/注射的對象,而不是使用ObjectGraph就像一個大的註釋地圖設計。

基本上,.get()被設計用於抓取從對象圖中的根實例在其下所有的依賴關係將是@Inject編正常。