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.
91 lines
3.1 KiB
91 lines
3.1 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
|
|
//on ne peut plus utiliser l'operateur = car le mot clé event est utilisé
|
|
//devant l'instance de délégué
|
|
//il n'est donc plus possible, grâce au mot-clef event, de désabonner des méthodes provenant d'autres objets
|
|
//dif.Informer = RecevoirInfo;
|
|
}
|
|
}
|
|
}
|
|
|