根据“工厂”设计模式构想一个库,我需要区分被认为是“只读”的接口和那些也可以具有写入权限的接口。因此,我开发了以下架构:
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;
一切顺利。
有人已经遇到过这种情况吗?它是编译器错误吗?任何可以解决问题的编译器参数?
感谢您的关注。