根據「工廠」設計模式構建一個庫,我需要區分認爲是「只讀」的接口和那些也可以擁有寫權限的接口。因此,我開發了以下模式:actionscript奇怪的getter/setter訪問
public interface IReadOnly {
function get value(): Number;
}
public interface IReadWrite extends IReadOnly {
function set value (v:Number): void;
}
internal class ReadWrite implements IReadWrite {
public function get value(): Number {
return m_value;
}
public function set value (v:Number): void {
m_value = v;
}
protected var m_value:Number;
}
所以問題是:我無法訪問類的實例上的getter。 Flex的將拒絕編譯下面的代碼:
function doSomething (rw:IReadWrite): void {
var num:Number = rw.value;
}
Flex的告訴我:「1178:通過靜態類型IReadWrite參考無法訪問屬性值的嘗試訪問」
當我用一個簡單的函數替換setter時,例如function setValue (v:Number): void;
,每件事情都很順利。
有人已經遇到這種情況?這是一個編譯器錯誤?任何可以解決問題的編譯器參數?
感謝您的關注。
謝謝!是的,醜陋的,並不真正「用戶友好」,因爲我的代碼將被打包到其他開發人員的圖書館。但有了明確的文檔,這讓我有一個很好的lib設計。 (我想提出你的答案,但我不能,因爲我的「聲譽」還不夠好......) – Clem 2013-06-26 10:34:06