Méthode delegate

medbabs Messages postés 38 Date d'inscription lundi 5 janvier 2009 Statut Membre Dernière intervention 12 janvier 2011 - 10 juil. 2007 à 11:47
TeBeCo Messages postés 467 Date d'inscription lundi 24 juin 2002 Statut Membre Dernière intervention 9 mars 2011 - 11 juil. 2007 à 17:58
Bonjour
j'ai programmé une classe(en c#) qui fait appel à des méthodes des autres classes, chacune de ces derniers fait la connexion à un type de base de  données(sqlserver, oracle.....),comment je peut utiliser delegate pour que au moment d'execution je ne fais l'appel que à la méthode convenable(par exemple celle qui fait la connexion à une base de données SqlServer).

merci

8 réponses

romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 3
10 juil. 2007 à 13:12
euu j'ai pas tout compris mais a la rigueur passer le nom de la méthode à ta fonction qui elle recoit un delegué
ensuite ta fonction appelle

public delegate void AppelAUServeurDesireHandler();

public ContactCollection FindAll(AppelAUServeurDesireHandler method)
        {
method();
       }

Se poser les bonnes questions ;) 
apporter les réponses
0
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
10 juil. 2007 à 13:23
Hello,

En principe, pour ce genre de chose, on utilise plutôt les interface.

Ces interfaces existent déjà dans System.Data :
IDbCommand, IDbConnection, IDbDataParameter,...

Ta classe a donc comme retour dans sa signature une interface, et renvoie un objet du bon type.

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
0
medbabs Messages postés 38 Date d'inscription lundi 5 janvier 2009 Statut Membre Dernière intervention 12 janvier 2011
10 juil. 2007 à 13:56
merci pour votre réponse sharpMao pour votre réponse je vais essayer votre proposition.
0
TeBeCo Messages postés 467 Date d'inscription lundi 24 juin 2002 Statut Membre Dernière intervention 9 mars 2011
10 juil. 2007 à 14:08
Ce genre de problème relève effectivement du polymorphisme : plusieur classe avec des membre et des methode effectuant des action similaire mais avec un code propre a chaqune
ex :
la classe "vehicule" si tu la definie en tant que "virtual" => doit etre herité pour etre utilisé car un "vehicule" reste abstrait en soit (virtual = classe abstraire)
tu en fais par exemple, une voiture, un bateau et un avion
cela dit tte ces classe ont besoin par exemple d'un methode "demarrer avancer reculer ...."
pour cela il suffit d'imposer une interface qui decrit les signature de fonctions/membres qu'elles DEVRONT "implémenter" (c'est le terme) exemple :
public class Voiture : Vehicule, IVehicule
{

}

dans cette interface on decrit donc jsute la signature des membre en question :
public interface IVehicule
{
    public bool Start();
    ....
}

le fait d'implementer l'interface forcera les classe a implementé la methode "Start()"
a partir de la chasque classe decrira sa maniere de demarrage mais effectura tout de meme l'action.
ect ...

cf la doc pour plus d'info mais c'est cela que l'on appelle le polymorphisme (c'est les exactement ca niveau sémentique mais ca s'en approche) ce qui semble etre le cas ici présent

sinon si tu veux persister avec les delegate "il faudrait" :

exposer la declaration du type de delegate :
public/internal delegate void AppelHandler

mais pas l'instance du delegué directement :
private AppelHandler dlg;
public Appel {
    get {
       return dlg;
    }
}

comme ca apres tu invoque le delegué sans pouvoir le modifier, l'instanciation et le rattachement du delegué a sa procédure se fait en code DANS la classede facon masqué

TeBeCo
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
medbabs Messages postés 38 Date d'inscription lundi 5 janvier 2009 Statut Membre Dernière intervention 12 janvier 2011
10 juil. 2007 à 17:40
je parle pas de polymorphisme ,mais en tout cas Merci TeBeCo pour votre réponse.
0
TeBeCo Messages postés 467 Date d'inscription lundi 24 juin 2002 Statut Membre Dernière intervention 9 mars 2011
10 juil. 2007 à 18:01
j'ai tout de meme indiquer la methode d'utilisation avec les delegate (en supposant que tu sache instancié et rattaché un delegué a sa routine)

TeBeCo
0
medbabs Messages postés 38 Date d'inscription lundi 5 janvier 2009 Statut Membre Dernière intervention 12 janvier 2011
10 juil. 2007 à 19:50
Merci TeBeCo,je me suis inspiré de votre réponse ,et en fin j'ai pu résoudre le pb.
0
TeBeCo Messages postés 467 Date d'inscription lundi 24 juin 2002 Statut Membre Dernière intervention 9 mars 2011
11 juil. 2007 à 17:58
pense a valider ce post sur le forum au passage dans ce cas la ca permet a tous les utilisateur de savior que ca a été resolu

TeBeCo
0
Rejoignez-nous