IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Framework .NET Discussion :

[C#] callback ou appel de class/fonction hors de la "User Control Library"


Sujet :

Framework .NET

  1. #1
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 397
    Points : 130
    Points
    130
    Par défaut [C#] callback ou appel de class/fonction hors de la "User Control Library"
    Hello,

    J'ai un problème d'architecture je crois. Je m'explique:

    J'ai, dans le cadre d'un petit projet pour me faciliter mon day-to-day, commencé à développer une petite application qui va se connecter a plusieurs sharepoint et qui dispose d'une petite BDD en local sous Access.

    Dans mon projet j'ai un certains nombre de class et formulaire ainsi qu'un fichier de configuration avec toutes les Connections Strings vers la base de donnée locale. J'ai également décidé de créer une library pour mes contrôles afin de ne pas avoir à ré-écrire à chaque fois tout les formulaires et le code qui va avec.

    Mon problème qui se pose maintenant est le suivant: j'ai dans ma librairie de contrôle besoin de prendre les valeurs qui ont changé dans mes formulaires et de les stocker dans ma base locale. Sauf que la logique d'accès au donnée ne se trouve pas dans la librairie mais dans mon projet WinForms.

    Comment faire pour solutionner ce problème de dépendance? J'ai penser à faire des callbacks, mais je ne pense pas que ça marche...

    Merci bien pour votre aide

    L.

  2. #2
    Expert confirmé Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Points : 5 485
    Points
    5 485
    Par défaut
    Bonjour. Pourquoi diable des callbacks ne fonctionneraient-ils pas ? Il n'y a aucune raison. Le fait que ce soient deux assemblées différentes ne change rien.

    Cela dit fournir explicitement un délégué est possible mais en général souscrire à un événement ou fournir une implémentation d'une interface est plus propre à mon goût.

  3. #3
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 397
    Points : 130
    Points
    130
    Par défaut
    Est-ce que tu peux développer un peu? Je suis un peu nouveau dans ces concepts ^^ Merci

    L.

  4. #4
    Expert confirmé Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Points : 5 485
    Points
    5 485
    Par défaut
    Disons que tu as un contrôle MonControle dans ta bibliothèque. Disons maintenant que tu as besoin de fournir à ce contrôle un moyen de lire les données. Or cet accès aux données est défini dans l'application.

    Exemples de solutions :
    * Dans ta bibliothèque déclare une interface IDataProvider. MonControle aura une propriété DataProvider acceptant un IDataProvider. Dans ton appli il suffira d'implémenter IDataProvider.

    * Dans ta bibliothèque déclare un délégué DataRequestDelegate. MonControle aure un événement DataRequested du type DataRequestDelegate. Dans ton appli il suffira de souscrire à DataRequestedd et d'implémenter DataRequestDelegate.

  5. #5
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 397
    Points : 130
    Points
    130
    Par défaut
    Ok merci, je commence un peu à voir comment solutionner le problème

    Par contre, quel est l'avantage de l'interface par rapport au délégué ? Pourquoi utilises-t-on l'un plutôt que l'autre?

  6. #6
    Expert confirmé Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Points : 5 485
    Points
    5 485
    Par défaut
    Ça se discute selon le contexte, il n'y a pas une bonne et une mauvaise solution dans l'absolu.

    Mais disons que lorsqu'un programmeur voit une méthode "ProvideData" dans un fichier il en comprend l'intention générale mais ne sait pas spontanément par qui elle est utilisé ni à quel moment. En revanche s'il voit une classe implémentant IDataProvider, pour peu qu'il connaisse cette interface il comprend immédiatement le rôle, l'usage et le contexte d'utilisation de cette classe.

Discussions similaires

  1. Réponses: 6
    Dernier message: 31/10/2012, 16h01
  2. Réponses: 4
    Dernier message: 18/01/2007, 05h46
  3. Réponses: 8
    Dernier message: 09/01/2006, 16h58
  4. Réponses: 3
    Dernier message: 06/11/2005, 18h02
  5. [débutant] appel de la fonction d'une super-classe
    Par Higestromm dans le forum C++
    Réponses: 7
    Dernier message: 10/10/2005, 13h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo