espadon2
Messages postés71Date d'inscriptionjeudi 19 juin 2003StatutMembreDernière intervention21 octobre 2008
-
19 juil. 2006 à 14:39
espadon2
Messages postés71Date d'inscriptionjeudi 19 juin 2003StatutMembreDernière intervention21 octobre 2008
-
19 juil. 2006 à 22:10
Bonjour tout le monde ,
Voila j' ai un petit souci , et je sais meme pas si c'est faisable ...
Je suis en train de develloper des classes en vue d'un gros projet ... par consequent mes classes seront utilsées par d'autres personnes ...et c'est pas gagné , il developpe toujours en COBOL ...je ne critique pas mais il connaisse rien au dev sous windows ... encore moins a l' objet ...d'ou une sacré remise a niveau ...bref je veux leur faciliter le travail en créeant des classes simples a utiliser , et avec une souplesse dans le passage des paramètres
Dans mes classes , il ya des procédures bien entendu :
exp :
public Class maClasse
{
public maClasse ()
{
}
public void maFonction (string aAlign)
{
}
}
La parametre aAlign peut prendre que 3 valeurs = "Center","Left","Right"
je voudrais que quand le futur develloppeur , appelle cette procedure , l'environnement de Dev propose automatiquement mes 3 possible parametres
exp :
maClasse mc = new maClasse();
mc.maFonction( - "Center"
- "Left"
- "Right"
Je suis conscient de ma question tordue .....
Je suis passé par essayer enum , mettre ca dans #region ... mais bon ..raté ...
En vous remerçiant , pour vos réponses , et encore mieux si quelqu'un a une solution... :)
dgouttegattat
Messages postés129Date d'inscriptionmardi 22 novembre 2005StatutMembreDernière intervention30 décembre 20073 19 juil. 2006 à 15:00
Bonjour,
À mon avis, l'énumération est la meilleure solution : ça ne fera peut-être pas ce que tu veux (ça dépend des fonctionnalités de l'IDE, et je ne sais pas ce que permet SharpDevelop en matière de complétion de code), mais au moins, si l'utilisateur de la classe passe une valeur non comprise dans l'énumération, le compilateur rejettera l'appel, donc il n'y aucun risque que ta méthode soit appelée avec un mauvais paramètre.
cs_coq
Messages postés6350Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 19 juil. 2006 à 15:43
Salut,
Oui, à mon avis aussi c'est le plus "pratique" du point de vue de l'utilisateur.
En revanche si tu dois en interne obligatoirement travailler avec des chaines tu devrais effectuer un parallèle entre la valeur du paramètre et sa représentation sous forme de chaine de caractères (les enums ne supportent que les types intégraux, à l'exception de char), mais même dans ce cas la solution de l'enum est bonne, il vaut mieux que la conversion soit interne à ta bibliothèque de classes plutôt que externe.
<hr />
Une autre solution permettant de limiter les choix de l'utilisateur est de passer par une classe "statique" exposant des instances d'elle même correspondant aux valeurs possibles. Cette classe n'étant instanciable que depuis elle même, tu limites les choix.
Exemple :
public class Alignemnt
{
private Alignemnt()
{
} private Alignemnt(string name)
{
this._name = name;
}
private string _name;
// Permet de récupérer la valeur sous forme de chaîne de caractères.
public override string ToString()
{
return this._name;
}
#region Valeurs possibles
private static Alignemnt _center = new Alignemnt("Center");
private static Alignemnt _left = new Alignemnt("Left");
private static Alignemnt _right = new Alignemnt("Right");
public static Alignemnt Center
{
get
{
return Alignemnt._center;
}
}
public static Alignemnt Left
{
get
{
return Alignemnt._left;
}
}
public static Alignemnt Right
{
get
{
return Alignemnt._right;
}
}
#endregion Valeurs possibles
}
-----------------------
public class MaClasse
{
public MaClasse()
{
}
public void MaFonction(Alignemnt aAlign)
{
}
}
-----------------------
MaClasse mc = new MaClasse();
mc.MaFonction(Alignemnt.Center);
<hr />
En dernier lieu il te reste l'utilisation de constantes, mais tu perd la limitation à la compilation.
espadon2
Messages postés71Date d'inscriptionjeudi 19 juin 2003StatutMembreDernière intervention21 octobre 2008 19 juil. 2006 à 22:07
Merci pour vos conseils ,
Je suis parti avec une enumération comme type de parametre de ma fonction,
enum myAlign
{
_center,
_left,
_right,
}
je gere ce paremetre dans ma function avec un switch /case
public void MaFonction(myALign aAlign)
{
switch(aAlign)
{
case myAlign._center :
...
break;
case myAlign_left:
...
break,
etc....
}
}
et on developpemement , on me propose automatiquement ce type lors de l' appel de la fonction ..reste plus qu'a choisir _center,_left,_right ... et oui , s'il se plante le compilateur indiquera un mauvais type au passage de paremètre
pas tout a fait ce que je voulais mais presque ... ca le fait
Merci a nouveau
Demain j'essaye la solution de la classe statique ....