You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mchsamples-.net-core/ex_028_012_delegate_Broadca.../Subscriber.cs

88 lines
2.8 KiB

// ========================================================================
//
// Copyright (C) 2016-2017 MARC CHEVALDONNE
// marc.chevaldonne.free.fr
//
// Module : Subscriber.cs
// Author : Marc Chevaldonné
// Creation date : 2016-10-03
//
// ========================================================================
using System;
using static System.Console;
namespace Broadcaster_Subscriber
{
/// <summary>
/// classe dont les instances vont s'abonner au type délégué Informer de la classe Broadcaster
/// </summary>
class Subscriber
{
/// <summary>
/// nom de l'abonné
/// </summary>
public string Name
{
get;
private set;
}
/// <summary>
/// méthode du type délégué Broadcaster.Information
/// </summary>
public void RecevoirInfo(string info, DateTime date)
{
WriteLine($"{Name} a reçu l'info {info} le {date.ToString("d")} à {date.ToString("t")}");
}
/// <summary>
/// constructeur
/// </summary>
/// <param name="nom">nom de l'abonné</param>
public Subscriber(string nom)
{
Name = nom;
}
/// <summary>
/// méthode permettant à l'instance d'Subscriber de s'abonner à l'instance de délégué Informer d'un Broadcaster
/// </summary>
/// <param name="dif">le diffuseur</param>
public void Abonnement(Broadcaster dif)
{
#region affichage console
ForegroundColor = ConsoleColor.DarkGray;
WriteLine($"{Name} vient de s'abonner à {dif.Name}");
ForegroundColor = ConsoleColor.White;
#endregion
dif.Informer += RecevoirInfo;
}
public void Désabonnement(Broadcaster dif)
{
#region affichage console
ForegroundColor = ConsoleColor.DarkGray;
WriteLine($"{Name} vient de se désabonner de {dif.Name}");
ForegroundColor = ConsoleColor.White;
#endregion
dif.Informer -= RecevoirInfo;
}
/// <summary>
/// méthode qui désabonne tous les autres abonnés à l'instance de délégué Broadcaster.Informer et qui ne garde que l'instance this
/// </summary>
/// <param name="dif">le diffuseur</param>
public void DésabonnerToutLeMondeSaufMoi(Broadcaster dif)
{
#region affichage console
ForegroundColor = ConsoleColor.DarkGray;
WriteLine($"{Name} vient de désabonner tout le monde sauf lui de {dif.Name}");
ForegroundColor = ConsoleColor.White;
#endregion
dif.Informer = RecevoirInfo;
}
}
}