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

C# Discussion :

[C#] accèder à un event sans instancier la classe


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Février 2007
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 574
    Par défaut [C#] accèder à un event sans instancier la classe
    Bonjour à tous,
    Voilà le problème que je me pose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
     
    public delegate void MonDelegate(MonEvenement evt);
     
    public class Model {
      public event MonDelegate UnChangement;
     
      private String _change = null;
     
      public String change() {
        get { return _change; }
        set { _change = value;
                UnChangement(new MonEvenement(_change));
              }
      }
     
    public class Vue {}
    Imaginons que j'ai de nombreuses classes modèles. J'aimerai dans la classe vue être notifié des changements des classes modèles, mais sans les instancier.
    Y'a-t-il une méthode (ou un pattern) pour ajouter un écouteur à l'évènement UnChangement sans instancier la classe model?
    Merci d'avance...

  2. #2
    Expert confirmé
    Avatar de Ditch
    Inscrit en
    Mars 2003
    Messages
    4 160
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mars 2003
    Messages : 4 160
    Par défaut
    En "décentralisant" un observer ca devrait être bon.

    Tu auras ainsi:
    model
    lance un event dans une classe observer
    vue qui est abonne à l'"vent de la classe observer qui le recoit.

    Ca te convient, si oui, envoie moi un MP, j'ai un besoin d'un relecteur pour un article sur le sujet qui sortira sous peu

  3. #3
    Membre chevronné
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Février 2007
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 574
    Par défaut
    Pas de problème pour la relecture de l'article, j'aimerai bien m'investir un peu plutôt que toujours recevoir, même si je suis pas sur de tout saisir, je suis encore un newbee (pour encore combien de temps ).
    J'ai pas tout saisi à tes explications, mais en gros,
    Je centralise la déclaration de tous les évènements dans la classe modèle.
    Chaque classe de la couche modèle lance les évènements de la classe model (je pensais que c'était pas possible).
    La classe vue s'abonne aux évènements via la seule instance de la classe model.
    ça m'irait super, mais
    Chaque classe de la couche modèle lance les évènements de la classe model
    c'est possible?
    Merci.

  4. #4
    Membre Expert
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Par défaut
    Citation Envoyé par dahtah Voir le message
    La classe vue s'abonne aux évènements via la seule instance de la classe model.
    Regarde ce lien [C#] Comment faut-il déclarer un évenement de changement de valeur ? .

  5. #5
    Membre chevronné
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Février 2007
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 574
    Par défaut
    Salut mehdi_tn,
    Mon modèle est passé en argument du constructeur du controleur.
    Mon problème est surement bête, c'est la première fois que j'implémente ce pattern (MVC).
    En fait, j'ai une classe model qui communique avec la classe controleur. Cette classe model instancie de nombreux objets via d'autres classes. Ces autres classes possèdent des évènements. Comment, pour mettre à jour la vue ,celle-ci accède-t-elle aux évènements des nombreuses classe de la couche modèle?
    Vu qu'un évènement ne peut-être accéder que depuis la classe où il est déclaré, je suis un peu ...
    Tous les tutoriels que j'ai lus instancie directement le modèle dans la vue. Celui-ci par exemple.

  6. #6
    Membre chevronné
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Février 2007
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 574
    Par défaut
    ça je comprend, y'a pas de problème. Mais si piloutou à de nombreuses classe Data dans son modèle, il est obligé d'avoir toutes les instances dans la vue pour allouer les évènements LastValueChanged.

  7. #7
    Membre Expert
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Par défaut
    Citation Envoyé par dahtah Voir le message
    Y'a-t-il une méthode (ou un pattern) pour ajouter un écouteur à l'évènement UnChangement sans instancier la classe model?
    Je ne comprends pas, si ton modèle va être changé alors il doit bien être instancié quelque part !!!! Quel genre de modèle utilise-tu ?

    Sinon Ditch, j'éspere que ton article est pour très bientôt parce que Mr Gu nous a prévu une surprise ScottGu MVC Presentation and ScottHa Screencast from ALT.NET Conference

  8. #8
    Expert confirmé
    Avatar de Ditch
    Inscrit en
    Mars 2003
    Messages
    4 160
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mars 2003
    Messages : 4 160
    Par défaut
    Citation Envoyé par mehdi_tn Voir le message
    Je ne comprends pas, si ton modèle va être changé alors il doit bien être instancié quelque part !!!! Quel genre de modèle utilise-tu ?

    Sinon Ditch, j'éspere que ton article est pour très bientôt parce que Mr Gu nous a prévu une surprise ScottGu MVC Presentation and ScottHa Screencast from ALT.NET Conference
    Et? Faut pas rêver la plupart des gens n'utiliseront pas cela avant plusieurs mois voire années... J'ai pas de souci à me faire Si tel était le cas, on aurait plus que des gens qui postent sur .NET 3.5 or y en a qui savent mm pas ce que c'est

Discussions similaires

  1. Instancier une classe sans appeler son constructeur ?
    Par Maitre2B dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 15/11/2014, 16h38
  2. Instancier une classe sans nommer l'objet
    Par jamiria dans le forum VB.NET
    Réponses: 0
    Dernier message: 29/10/2010, 14h17
  3. Réponses: 4
    Dernier message: 22/05/2010, 11h25
  4. Instancier une classe sans connaitre son nom
    Par Molkobain dans le forum Langage
    Réponses: 8
    Dernier message: 16/02/2009, 14h49
  5. VB.NET : utilisation de classe sans instanciation
    Par mexong dans le forum Windows Forms
    Réponses: 2
    Dernier message: 10/10/2006, 11h00

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