OVH Cloud OVH Cloud

Creation dynamique d'objet

4 réponses
Avatar
Bruno Remeyse
Bonjour,

J'aurai besoin de créerdans mon appli des objets dont le nom est donné par
l'utilisateur.
Est-il possible d'acquerir ce nom dans une variable string et de lancer
l'instanciation d'un objet portant ce nom ?
Comment executer le contenu d'une variable ?
Ex :
public class ecolier
{
.....
}

string mavariable = "toto" (nom tapé au clavier)

... pour pouvoir obtenir quelque chose comme :
ecolier toto = new ecolier();

4 réponses

Avatar
Guillaume Davion
Non, tu ne peux pas nommer une variable dinamyquement.
Par contre, à la limite, tu peux peut-être créer une Hashtable et y
créer des éléments avec le nom que tu reçois en paramètre.

De toute façon, je vois assez mal l'usage que tu veux faire de cette
variable?
Avatar
Bruno Remeyse
Merci de ta réponse.
Mon problème est d'instancier des objets à partir de leur déclaration dans
la base de registre.
Il peut y avoir plus de 200 possibilités d'instance. Je m'explique :
J'ai créé une classe "Machine" me permettant d'envoyer des ordres et de
recevoir des acknoledges de fonctionnement.
Lors de l'ouverture de session, je vais chercher dans la base de registre
les noms et caractéristiques de machines outils connectées au système à cet
instant t.
Les identifications de ces machines sont donc des strings dans le registre.
Mon problème est qu'une fois récupérés ces éléments dans un tableau, je
voudrais instancier les machines pour pouvoir les controler.
J'ai par exemple dans le registre la présence de la machine "AX001" qui a
pour code d'acces "0x6e".
il me faudrait pouvoir faire
public Machine AX001 = new Machine();
afin de pouvoir utiliser les fonctions telles que "AX001.stand_by()" ou
AX006.demarre(), méthode publique de la classe.

Merci par avance,

Bruno


"Guillaume Davion" wrote in message
news:
Non, tu ne peux pas nommer une variable dinamyquement.
Par contre, à la limite, tu peux peut-être créer une Hashtable et y
créer des éléments avec le nom que tu reçois en paramètre.

De toute façon, je vois assez mal l'usage que tu veux faire de cette
variable?
Avatar
Cyril S.
... je sais pas si c'est possible et j'avoue que je vois pas le but d'une
telle manoeuvre (p'etre que plus d'info nous permettrais de comprendre le but
de l'exercice).

Si tu veux pouvoir accéder à tes machines depuis leur nom, une Hashtable me
parait très bien (désolé de répéter c'qu'on t'a déjà dit) :

maHashtable.Add ("AX001", new Machine());
...
maHashtable["AX001"].stand_by();

--
CS


"Bruno Remeyse" wrote:

Merci de ta réponse.
Mon problème est d'instancier des objets à partir de leur déclaration dans
la base de registre.
Il peut y avoir plus de 200 possibilités d'instance. Je m'explique :
J'ai créé une classe "Machine" me permettant d'envoyer des ordres et de
recevoir des acknoledges de fonctionnement.
Lors de l'ouverture de session, je vais chercher dans la base de registre
les noms et caractéristiques de machines outils connectées au système à cet
instant t.
Les identifications de ces machines sont donc des strings dans le registre.
Mon problème est qu'une fois récupérés ces éléments dans un tableau, je
voudrais instancier les machines pour pouvoir les controler.
J'ai par exemple dans le registre la présence de la machine "AX001" qui a
pour code d'acces "0x6e".
il me faudrait pouvoir faire
public Machine AX001 = new Machine();
afin de pouvoir utiliser les fonctions telles que "AX001.stand_by()" ou
AX006.demarre(), méthode publique de la classe.

Merci par avance,

Bruno


"Guillaume Davion" wrote in message
news:
Non, tu ne peux pas nommer une variable dinamyquement.
Par contre, à la limite, tu peux peut-être créer une Hashtable et y
créer des éléments avec le nom que tu reçois en paramètre.

De toute façon, je vois assez mal l'usage que tu veux faire de cette
variable?





Avatar
Bruno Remeyse
La solution HashTable est la bonne.
Merci beaucoup pour ton aide.

Bruno

"Cyril S." wrote in message
news:
... je sais pas si c'est possible et j'avoue que je vois pas le but d'une
telle manoeuvre (p'etre que plus d'info nous permettrais de comprendre le
but
de l'exercice).

Si tu veux pouvoir accéder à tes machines depuis leur nom, une Hashtable
me
parait très bien (désolé de répéter c'qu'on t'a déjà dit) :

maHashtable.Add ("AX001", new Machine());
...
maHashtable["AX001"].stand_by();

--
CS


"Bruno Remeyse" wrote:

Merci de ta réponse.
Mon problème est d'instancier des objets à partir de leur déclaration
dans
la base de registre.
Il peut y avoir plus de 200 possibilités d'instance. Je m'explique :
J'ai créé une classe "Machine" me permettant d'envoyer des ordres et de
recevoir des acknoledges de fonctionnement.
Lors de l'ouverture de session, je vais chercher dans la base de registre
les noms et caractéristiques de machines outils connectées au système à
cet
instant t.
Les identifications de ces machines sont donc des strings dans le
registre.
Mon problème est qu'une fois récupérés ces éléments dans un tableau, je
voudrais instancier les machines pour pouvoir les controler.
J'ai par exemple dans le registre la présence de la machine "AX001" qui a
pour code d'acces "0x6e".
il me faudrait pouvoir faire
public Machine AX001 = new Machine();
afin de pouvoir utiliser les fonctions telles que "AX001.stand_by()" ou
AX006.demarre(), méthode publique de la classe.

Merci par avance,

Bruno


"Guillaume Davion" wrote in message
news:
Non, tu ne peux pas nommer une variable dinamyquement.
Par contre, à la limite, tu peux peut-être créer une Hashtable et y
créer des éléments avec le nom que tu reçois en paramètre.

De toute façon, je vois assez mal l'usage que tu veux faire de cette
variable?