Bonjour,
La conception d'une bibliothèque de classes suivant le pattern "Factory" m'impose de séparer les interfaces à considérer comme étant "en lecture seule" et celles ayant également un accès en écriture. J'obtiens donc pour chaque classe le schéma suivant:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
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;
} |
Le problème est le suivant: je ne peux pas accéder au "getter" une fois la classe instanciée. Le compilateur de flex refuse simplement de compiler le code suivant:
1 2 3 4
|
function doSomething (rw:IReadWrite): void {
var num:Number = rw.value;
} |
Flex me dit: "1178: Tentative d'accès à la propriété inaccessible value, via la référence de type static IReadWrite."
Lorsque dans IReadWrite je remplace le setter par une simple fonction du style:
function setValue (v:Number): void
le compilateur ne bronche plus...
Quelqu'un a t il déjà rencontré ce cas de figure ? Est ce un bug du compilateur ? Existe t il des paramètres pour le compilateur permettant de résoudre ce problème ?
Merci d'avance pour votre attention.
Partager