2009-06-10 3 views
0

Je cherche l'équivalent de décorateurs Python/macros Lisp/annotations Java (oui, je sais que celles-ci ne sont pas nécessairement équivalentes) dans Actionscript. Les outils qui fournissent des fonctionnalités similaires seraient également géniaux (j'utilise le plugin Flex Builder pour Eclipse sous Linux).Y a-t-il des décorateurs/macros/annotations dans AS 3?

J'écris une application Flex et voici ce que je veux accomplir:

J'encapsulé différents ensembles de fonctionnalités à distance dans des classes séparées (ce qui est parfois appelé « messagerie Passerelles » ou « à distance proxies »), où chaque méthode reflète une méthode sur le serveur, comme ceci:

class UserManagementService extends MyHttpService { 
    //... 
    private final _urlBase:String = "http://example.com/services/users" 
    //... 

    public function usrGet(ix:int):User 
    { 
    url = urlBase + "/get"; 
    mp:Dictionary = new Dictionary(); 
    mp["ix"] = ix; 
    result:User = this._service.varSend(url, this.sEncodeParams(mp), Class("User")); 
    return result; 
    } 
    //... 
} 

Depuis que j'ai les paramètres et le type de retour de la fonction à distance déjà dans la déclaration de fonction, il serait bien d'ajouter que le suffixe d'URL, comme ceci (pseudocode inspiré de Python):

@remotify("/get") 
public function usrGet(ix:int):User { } 

Maintenant, ce ne serait pas soigné? ;-)

Répondre

6

Vous pouvez ajouter ce qu'on appelle des "métadonnées" dans ActionScript comme ceci:

[Remotify(prop="value")] 

Plus d'informations ici:

http://www.adobe.com/cfusion/communityengine/index.cfm?event=showdetails&productId=2&postId=11907

+0

Cool, je ne savais pas que ces étaient réellement personnalisables. Je verrai si cela accomplit ce que je veux. –

+0

Oui, vous avez juste besoin d'ajouter un argument de compilation spécial pour que l'information soit disponible à l'exécution, puis utilisez describeType() pour le récupérer. L'article que j'ai lié est super simple. Bonne chance. :) –