Forums : XPCom

Aller à la discussion :  Plus récente Plus ancienne

# factory en XPCom

Envoyé par : hhf

Date : 17/11/2008 22:32

Resalut, je viens encore poser quelques questions, merci a ceux qui reponde..

Voila, je voudrais faire le design pattern Factory en XPcom, c'est possible ? Peut on faire des methodes statiques sur la classe definit dans le XPCom, si oui, comment appeler un methode "static" dessus sans l'instancier ?

En gros faire ca

var file = Components.classes["@mozilla.org/file/local;1"].getFile(path);
 if (!file) return false;

plutot que ca :

var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
 if (!file) return false;
 file.initWithPath(path);

Bien sur l'exemple est fictif, mais l'idee est la.. si vous avez des idees, d'une part pour le code du XPCom et pour l'ecriture correct de l'appel de la methode static. Si c'est possible bien sur. peut etre avec l'aide d'un service via getService, mais c'est pareil, je n'ai pas trop trouver de doc dessus...

# Re: factory en XPCom

Envoyé par : thefab

Date : 21/11/2008 13:50

Je n'ai jamais fais de composant XPCOM en C++ mais je pense que c'est la même chose qu'en JS, tu peux ajouter une ligne lors de l'enregistrement de ton composant qui le déclare comme un objet accessible directement (comme une propriété de window)

Ça fais que tu peux même l'appeler comme ça:

var file = io.getFile(path);

Où io est ton composant visible sans l'instancier.

Mais bien sur je me rappelle plus de la ligne, je regarde ce week-end si qqun ne t'as pas répondu d'ici là...

# Re: factory en XPCom

Envoyé par : thefab

Date : 26/11/2008 17:57

Alors tu peux faire quelque chose comme ça:

Lorsque tu enregistre ton composant XPCOM tu ajoute une catégorie "Propriété globale" (qui en fait ajoute une propriété à l'objet window!)

var catMgr = Components.classes["@mozilla.org/categorymanager;1"].getService(Components.interfaces.nsICategoryManager);
catMgr.addCategoryEntry("JavaScript global property", "MonXPCOM", CONTRACT_ID, true, true);

Et tu peux l'appeler simplement dans le code:

var obj = new MonXPCOM();
obj.getFile(path);

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.