2011-04-29 53 views
1

我剛剛試圖將AS3項目的快速懸掛裝置使用,但當我試圖訪問它們時,注射是空的。它只在我使用injector.injectInto()顯式注入應該有引用的對象時才起作用。但這不可能是SwiftSuspenders的最佳方法,對吧?SwiftSuspenders工作不正常嗎?

回答

0

難道你沒有通過任何修改訪問你在類構造函數中注入的屬性嗎?如果是這樣,請使用PostConstruct元。

public class Example 
{ 
    [Inject] public var foo:Bar; 

    public function Example() 
    { 
     foo.barMe(); // throws null reference error 
    } 

    [PostConstruct] 
    public function _postConstruct():void 
    { 
     foo.barMe(); // OK 
    } 
} 

PostConstruct:在注射 完成依賴於 自動DI類

實例調用自動方法只准備使用 的DI完成後。在注入類中註釋 方法與 [PostConstruct]元數據使得它們在所有注入完成 完成後直接調用 ,並且它是 可安全使用該實例。通過使用訂單參數: [PostConstruct(order = 1)],可以以定義的 順序調用多個 方法。

ref [1]

0

需要調用injectInto需要依賴每個對象。圍繞這一步驟的方法是將該步驟抽象爲依賴注入容器(「DI容器」),該容器爲您管理該容器。 MVC工具包Robotlegs利用自己的系統完成自動化依賴注入。

這裏是從「動作腳本開發者指南的Robotlegs」的摘錄:

背後自動化DI容器的目的是抽象的 實現從應用程序本身的依賴。本質上,我們將這項工作完全分開,這樣應用程序代碼不再需要執行此操作,而是要求第三方 - DI 容器完成此操作。