Complete these tasks to reinforce what you learned in this module.
Ein Kunde hinterlegt, wie er benachrichtigt werden möchte. Der Wert kommt aus den Daten — beim Programmstart ist er noch unbekannt.
Implementiere EmailBenachrichtigung, SmsBenachrichtigung und PushBenachrichtigung hinter der Schnittstelle IBenachrichtigung sowie eine BenachrichtigungsFactory, die anhand des Kanal-Werts die passende Umsetzung liefert. Bei einem unbekannten Kanal soll sie eine ArgumentOutOfRangeException werfen.
Main durchläuft die drei Kanäle und danach einen ungültigen Wert, dessen Fehler abgefangen wird.
Erzeuge(Kanal kanal), die ein IBenachrichtigung zurückgibt — innen ein switch-Ausdruck mit _ => throw new ArgumentOutOfRangeException(...). Den ungültigen Wert erzeugst du mit (Kanal)99.using System;
public enum Kanal { Email, Sms, Push }
public interface IBenachrichtigung
{
void Sende(string empfaenger, string text);
}
// TODO: EmailBenachrichtigung -> "E-Mail an {empfaenger}: {text}"
// TODO: SmsBenachrichtigung -> "SMS an {empfaenger}: {text}"
// TODO: PushBenachrichtigung -> "Push an {empfaenger}: {text}"
public sealed class BenachrichtigungsFactory
{
public IBenachrichtigung Erzeuge(Kanal kanal)
{
// TODO: passende Umsetzung liefern,
// bei unbekanntem Kanal eine ArgumentOutOfRangeException werfen
throw new NotImplementedException("Erzeuge");
}
}
class Program
{
static void Main()
{
var factory = new BenachrichtigungsFactory();
var text = "Deine Bestellung ist unterwegs";
// TODO: Email an anna@example.com, SMS an +41790000000, Push an geraet-42
// TODO: (Kanal)99 versuchen und im catch "Unbekannter Kanal" ausgeben
}
}