In der Geschäftsklasse sollten Sie NIEMALS direkte Kommunikation über die Benutzeroberfläche verwenden.
Es ist, weil die Benutzeroberfläche winforms/webforms/console/smart_devices/etc ... oder keine Benutzeroberfläche verwendet werden kann (in Skripten zum Beispiel).
Wenn Sie einige Benutzer-entscheiden müssen im Geschäftsprozess können Sie mehrere Möglichkeiten, wie das zu verwenden. In .NET ist einer der einfachsten Weg Ereignisse.
Zum Beispiel:
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;}
}
Die Benutzeroberfläche kann dann die Ereignisse Haken und zeigen die richtige UI (messagebox, inputbox, Webformular, Konsole lesen/schreiben, etc ....
Wie würde ich die Antwort zurück, wenn ich das Ereignis bis zur Benutzeroberfläche fire? Wie würde ich wissen, wenn sie Ja oder Nein auf dem Meldungsfeld anzeigen? – c00ke
Das Ereignis würde durch den EventArgs-Parameter die Antwort zurückgeben. In einigen Fällen könnte Code Behandeln Sie das Ereignis, indem Sie einfach die Flagge setzen und zurückgeben, so dass Sie die Entscheidung treffen, anstatt den Benutzer zu fragen –
Grundidee: 1. Definieren Sie ein benutzerdefiniertes Ereignis in Ihrem Unternehmen. Objekt, z.B. serviceNotificationEvent oder ähnliches. 2. Im Ort, den Sie eine MessageBox erwägen, statt so etwas tun: (! ServiceNotificationEvent = null) wenn { serviceNotificationEvent (neu ServiceNotificationEventArgs (some, Moredata)); } 3. Abonnieren Sie in Ihrer UI ServiceNotificationEvent, z. B .: myServiceObject.ServiceNotificationEvent + = new ServiceNotificationEventHandler(); Der obige Code ist Pseudocode.Informieren Sie sich hier über die Ereignisse, um Details zu konkretisieren. http://www.akadia.com/services/dotnet_delegates_and_events.html –