Se servir d'un string comme attribut

Signaler
Messages postés
26
Date d'inscription
mardi 29 avril 2003
Statut
Membre
Dernière intervention
8 septembre 2010
-
Messages postés
33
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
7 octobre 2010
-
Bonjour,

j'expose le problème avec un exemple pour illustrer:

private void maFonction(string str)
{
if (monObjet.str == "String") { ... }
}
(c'est faux bien entendu!)

Je voudrais que le string que l'on entre dans la fonction MaFonction puisse etre interprétée comme un attribut (qui existe quand j'ai contruit l'objet monObjet).

EN gros si je fais: maFonction("ouvrir"); je voudrais que le framework comprenne
if (monObjet.ouvrir == "string") { ... }

Voilà je crois qu'en VB on utiliserait monObjet.Control(str); mais en C# je sais pas faire...

Merci.

5 réponses

Messages postés
33
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
7 octobre 2010

Bonjour,

Je ne sais pas si ça existe ou non… en tout cas tu peux faire la chose suivante :

private void maFonction(string arg0)
{
if (arg0==”str”{ // on fait appel à la method str de l’objet ‘monObjet’
if (monObjet.str == "String") { ... }
}//Fin If
}

Cordialement.
Ro_Ot-m@n.
Messages postés
33
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
7 octobre 2010

” == "
Messages postés
26
Date d'inscription
mardi 29 avril 2003
Statut
Membre
Dernière intervention
8 septembre 2010

Hum non c'est pas vraiment ca.
Y'a pas de methode str dans monObjet, il faut que l'attribut soit variable et puisse être contrôlé via la fonction:

Imaginons par exemple que monObjet ait les méthodes suivantes: "ouvrir", "fermer", "pousser" et des milliers d'autres.
je voudrais que le string que j'entre dans ma fonction soit entendu comme un attribut

maFonction("ouvrir"); correspondrait à une action sur monObjet.ouvrir

si j'entre maFonction("partir"); ca initilise l'objet monObjet.partir = ...

je peux le faire manuellement mais c'est long et c'est pas dynamique surtout.
Messages postés
380
Date d'inscription
samedi 22 janvier 2005
Statut
Membre
Dernière intervention
13 août 2011
7
salut

dans ton object tu met une Dictionary contenat en key le nom de la fonction a appeler par exemple ouvrir

et en value un object contenant un object avec un event

exemple rapide :

[code=cs]public class MonObject
{
internal Dictionary<String, ToolBarRegion> RegionTool = new Dictionary<String, ToolBarRegion>();

public MonObject()
{
RegionTool.Add("OUVRIR", new ToolBarRegion());
RegionTool["OUVRIR"].OnClick += new ToolBarRegionEventHandler(RegionOUVRIR_Click);
RegionTool["OUVRIR"].Text = "ce que tu veux";
}
private void RegionOUVRIR_Click()
{
MessageBox.Show("hello");
}

public void execute(String code)
{
if(RegionTool.Contains(code))
RegionTool
.RaizeRequire();
    }
}

internal delegate void ToolBarRegionEventHandler();
internal class ToolBarRegion
{
    public string Text;
    public event ToolBarRegionEventHandler OnRequire;
    public void RaizeRequire()
    {
         if (OnRequire != null)
              OnRequire();
    }
}

#endregion



bon j'ai tapé ca vite fait ici y'a peut etre des erreurs de frappe mais le code est bon :)
Messages postés
33
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
7 octobre 2010

hum je vois ce que tu veux dire, ce que j'ai dis dans mon premier msg fait référence à la même chose, sauf que c'est pas dynamique, autant de méthode que t'aura, autant de condition t'aura...
la solution proposer par yohan me semble un peux dynamique pour ce que tu veux... reste à voir si cela fonctionne, car la chose dont t'aura besoin est quelque chose du genre type(key,value)

pour le type Dictionary ça prend key de type string et value de type object... va voir si cela va fonctionner avec les méthodes...

tu laisse stp un commentaire si tu trouve une solution à ton problème pour les futurs visiteur...