cs_tigroux
Messages postés105Date d'inscriptionmardi 16 mars 2004StatutMembreDernière intervention22 octobre 2008
-
17 juil. 2007 à 17:08
cs_tigroux
Messages postés105Date d'inscriptionmardi 16 mars 2004StatutMembreDernière intervention22 octobre 2008
-
18 juil. 2007 à 11:52
Bonjour,
Je voudrais savoir si il est possible de se faire son propre Attribute Conditional.
En fait je souhaite faire une application qui a des fonctions que l'on peux ou non executer selon certains criteres, que je connais que au lancement de l'application, pas à la compilation.
Je sais que l'on peux creer ses propres attributes, mais je veux que si la condition passé en param n'est pas rempli, que la fonction ne s'execute pas.
Et j'aimerai ne pas faire un if dans chaque fonction.
ctx_man
Messages postés285Date d'inscriptionmardi 28 décembre 2004StatutMembreDernière intervention20 janvier 20133 17 juil. 2007 à 18:04
Salut !
Je te propose une solution à base de délégué.
public delegate void UneFonctionDelegue();
public class Maclass
{
public UnefonctionDelegue MonAttribut;
private void UneMethodeQuiFaitRien()
{
return;
}
private void UneMethodeFaitQuelquechose()
{
//Ici tu fait ce que ta ton attribut doit faire s'il est pris en charge
}
public MaClass()
{
//Puisque aucun paramètre n'est passé à la construction, alors la methode MonAttribut ne devra pas être executée.
MonAttribut += new UneFonctionDelegue(UneMethodeQuiFaitRien);
}
public MaClass(bool MethodeNonNulle)
{
// Si MethodeNonNulle == true alors la méthode MonAttribut executera du code
if(MethodeNonNulle == true)
MonAttribut += new UneFonctionDelegue(UneMethodeFaitQuelquechose);
else
MonAttribut += new UneFonctionDelegue(UneMethodeQuiFaitRien);
// Sinon, la méthode fait rien.
// D'accord il y as un if, mais c'est juste pour l'exemple et il est fait qu'a la construction de l'objet.
}
}
Maintenant quand tu fait :
MaClass A = new MaClass();
A.MonAttribut(); //C'est UneMethodeQuiFaitRien() qui est exécuté, donc la methode fait rien
MaClass B = new MaClass(false);
B.MonAttribut(); //Pareil qu'au dessu puisque le paramètre est faux (cf. le constructeur)
MaClass C = new MaClass(true);
C.MonAttribut(); //Dans ce cas-ci, c'est la méthode UneMethodeFaitQuelquechose() qui est éxécutée, et elle contient du code.