正如標題所暗示的,爲什麼是AsyncToken
的applyResult
和applyFault
方法標記mx_internal
?ActionScript/Flex:爲什麼應用AsyncToken內部的{Fault,Result}方法?
有幾次我希望在我的代碼中使用AsyncToken
,但是我最終重寫了它,因爲我不想強制客戶端登錄到use namespace mx_internal
。
正如標題所暗示的,爲什麼是AsyncToken
的applyResult
和applyFault
方法標記mx_internal
?ActionScript/Flex:爲什麼應用AsyncToken內部的{Fault,Result}方法?
有幾次我希望在我的代碼中使用AsyncToken
,但是我最終重寫了它,因爲我不想強制客戶端登錄到use namespace mx_internal
。
那麼,正如在livedocs中的某處(我認爲)mx_internal
被用來標記框架中可能隨時間而改變的東西(顯然他們認爲C#和Java對於棄用的東西是錯誤的)。至於爲什麼這些特定方法被標記爲mx_internal
的確切原因只有標記它們的開發人員知道。他們可能會在某一天討論這個問題,結果如下所示:「嘿,我們需要這些方法的訪問權限嗎?」「我不知道,我們希望它們可以被覆蓋嗎?」 「不確定」「好吧,讓我們讓他們mx_internal
然後」。有地方應該已被標記保護的方法進行標記mx_internal
(或私人這是更糟在某些情況下),而不是許多情況下,這是在Flex框架最討厭的事情之一。
此外,無論您是否需要,都使用mx_internal
命名空間,因爲框架中的大多數組件都會導入它,所以如果使用flex框架組件,則您的構建已包含它。
如果你建立了這個班你要隱藏的功能正常用戶望而卻步,因爲你不希望他們錯誤地調用方法,但創建它們的內部類需要調用它們,因此做標記他們作爲mx_internal很有道理。
它確實有意義*如果*類別*不打算被「普通用戶」使用*。但除了'apply'方法是'mx_internal'這個事實之外,沒有跡象表明情況是這樣。如果我想編寫一個返回「AsyncToken」的方法,會發生什麼? – 2012-12-07 20:45:06
感謝您的答覆 - 我很高興知道我不是一個人在感覺Flex的訪問修飾符是瘋了。另外,並不是我不想加載'mx_internal'命名空間......我只是不想強制我的庫的最終用戶導入mx.core.mx_internal;使用命名空間mx_internal'每次他們想發送我的代碼一個'AsyncToken'(我通過重寫'AsyncToken'來調用它'DeferredResult'來解決這個問題)。 – 2009-10-22 13:54:03