「ファクトリー」設計パターンに従ってライブラリを考えると、「読み取り専用」と見なすインターフェースと、書き込み権限も持つことができるインターフェースを区別する必要があります。そこで、次のスキーマを開発します。
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;
}
問題は、クラスのインスタンスのゲッターにアクセスできないことです。Flex は次のコードのコンパイルを拒否します。
function doSomething (rw:IReadWrite): void {
var num:Number = rw.value;
}
Flex からの連絡: 「1178: 静的型 IReadWrite を使用した参照を通じて、アクセスできないプロパティ値にアクセスしようとしました。」
セッターを単純な関数に置き換えると、function setValue (v:Number): void;
すべてがうまくいきます。
誰かがすでにこのシナリオに遭遇しましたか? それはコンパイラのバグですか?問題を解決できるコンパイラ パラメータはありますか?
ご清聴ありがとうございました。