Attribute

cs_tigroux Messages postés 105 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 22 octobre 2008 - 17 juil. 2007 à 17:08
cs_tigroux Messages postés 105 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 22 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.

Si vous avez des idées.

Merci

2 réponses

ctx_man Messages postés 285 Date d'inscription mardi 28 décembre 2004 Statut Membre Dernière intervention 20 janvier 2013 3
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.
0
cs_tigroux Messages postés 105 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 22 octobre 2008 16
18 juil. 2007 à 11:52
C'est vrai que cela pourrai me convenir
0
Rejoignez-nous