Задумывая библиотеку в соответствии с шаблоном проектирования «Factory», мне нужно различать интерфейсы, которые следует рассматривать как «только для чтения», и те, которые также могут иметь право записи. Итак, я разрабатываю следующую схему:
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;
, все идет хорошо.
Есть кто-нибудь уже сталкивались с этим сценарием? Это ошибка компилятора? Какие параметры компилятора могут решить проблему?
Спасибо за внимание.