Dans la classe bussines, vous ne devez JAMAIS utiliser de communications directes avec l'interface utilisateur. C'est parce que l'interface utilisateur peut être winforms/webforms/console/smart_devices/etc ... ou aucune interface utilisateur n'est utilisée (dans les scripts par exemple).
Si vous avez besoin d'un certain nombre de décisions de l'utilisateur dans le processus d'affaires, vous pouvez utiliser plusieurs façons, comment cela. En .NET est l'un des moyens simples des événements.
Par exemple:
public class MyBussinesClass {
public void DoSomeBussinesRelatedWork() {
// ... some code and then you need a users decision
var argWhichCurrencyToUse = new DecisionEventArgs {
Title = "Currency selection",
Text = "Which currency you want to use in bill?",
Answer = "USD"
};
this.OnDecisionRequred(argWhichCurrencyToUse);
// ... contine in work ...
}
protected void OnDecisionRequired(DecisionEventArgs e) {
// run the event
}
public event EventhHandler<DecisionEventArgs> DecisionRequired;
}
public class DecisionEventArgs {
public string Title {get;set;}
public string Text {get;set;}
public object Answer {get;set;}
}
L'interface utilisateur peut alors accrocher les événements et montrer l'interface utilisateur correcte (messagebox, inputbox, formulaire en ligne, console de lecture/écriture, etc ....
Comment pourrais-je obtenir la réponse de retour si je tire l'événement jusqu'à l'interface utilisateur? Comment saurais-je s'ils choisissent oui ou non sur l'exposition de boîte de message? – c00ke
L'événement fournirait, par le paramètre EventArgs, la réponse en arrière. gérer l'événement en plaçant simplement le drapeau et en revenant, en effet prendre la décision au lieu de demander à l'utilisateur –
Idée de base: 1. Définissez un événement personnalisé dans votre entreprise. objet, par ex. serviceNotificationEvent ou similaire. 2. Dans l'endroit où vous envisagez un MessageBox, au lieu de faire quelque chose comme ceci: (! ServiceNotificationEvent = null) si { serviceNotificationEvent (nouveaux ServiceNotificationEventArgs (someData, MOREDATA)); } 3. Dans votre interface utilisateur, abonnez-vous à ServiceNotificationEvent, par exemple: myServiceObject.ServiceNotificationEvent + = new ServiceNotificationEventHandler(); Le code ci-dessus est un pseudocode.Lisez à propos des événements ici pour étoffer les détails. http://www.akadia.com/services/dotnet_delegates_and_events.html –