2008-12-24 7 views
1

Supposons que j'ai un objet Client pouvant entrer plusieurs magasins et faire des achats simultanément. Lorsqu'un client entre dans un magasin, le magasin commencera à gérer les événements déclenchés par le client. Pour acheter un article, le client déclenche actuellement un événement PurchaseItem avec l'article particulier spécifié dans EventArgs.Comment émettre des événements C# ciblés vers des gestionnaires d'événements spécifiques?

Actuellement, étant donné que le client peut se trouver dans plusieurs magasins en même temps, chaque fois qu'il déclenche l'événement PurchaseItem, tous les magasins dans lesquels il se trouve sont notifiés. Est-il possible en utilisant les événements que lorsque le client déclenche l'événement PurchaseItem, seul le magasin qui héberge cet élément est averti?

Répondre

1

Cela ressemble à une façon extrêmement étrange de modéliser les choses. L'achat devrait être une action entre le magasin et le client - un appel de méthode directe, probablement du client au magasin. Cela pourrait déclencher un événement, mais je n'utiliserais pas un événement pour faire l'achat initial. Peut-être que cela a plus de sens dans votre contexte réel ... mais c'est difficile à dire sans connaître plus de détails.

1

Et si vous informiez l'article du magasin qui le possède? Ensuite, vous pouvez passer un appel à item.Purchase (this) avec ceci comme client et l'article déclenchera l'évènement de la boutique.

0

Je pense que les commandes sont la manière préférée de gérer des événements largement ciblés. Cela vous évite d'avoir à tout câbler correctement. Votre client pourrait émettre une commande d'achat et les magasins pourraient en consommer.

0

donner à vos événements un identifiant « canal » qui correspond au magasin approprié, et les magasins de code d'ignorer les événements non sur leur « canal »

mais jon au pigeon d'argile est à droite (jon au pigeon d'argile est toujours droite, ou au moins 99,999% de justesse) c'est une mauvaise conception - peut-être avec plus de détails, nous pouvons vous aider à le réparer

Questions connexes