Приобретая библиотеку в соответствии с шаблоном проектирования «Factory», мне нужно отличить интерфейсы, рассматриваемые как «только для чтения», и те, которые также могут иметь право на запись. Итак, я разрабатываю следующую схему: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;
}
Так что проблема: я не могу получить доступ к геттеру в экземпляре класса. Flex откажет скомпилировать следующий код:
function doSomething (rw:IReadWrite): void {
var num:Number = rw.value;
}
Flex сказать мне: «1178: Попытка доступа значения недоступного собственности через ссылку со статическим типом IReadWrite.»
Когда я заменяю сеттер простой функцией, такой как function setValue (v:Number): void;
, все идет хорошо.
Неужели кто-то уже столкнулся с этим сценарием? Это ошибка компилятора? Какие параметры компилятора могут решить проблему?
Благодарим за внимание.
Спасибо! Да, уродливый и не очень «удобный», так как мой код будет упакован в lib для других разработчиков. Но с четкой документацией, которая позволяет мне иметь хороший дизайн lib. (я хотел бы ответить на ваш вопрос, но я не могу, так как моя «репутация» еще не достаточно хороша ...) – Clem