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:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.