using ConsoleApp1.intf; using ConsoleApp1.pubsub; using ConsoleApp1.pubsub.generics; namespace ConsoleApp1 { internal class Program { static void Main(string[] args) { IPublisher pub1 = h_generics(); IPublisher pub2 = h_fixedClasses(); string[] arss = new string[] { "EXCEPTION", "INFO", "DEBUG" }; for (int ii = 0; ii < 10; ii++) { Thread.Sleep(1000); IMessage msg = new Message() { Category = arss[Random.Shared.Next(arss.Length)], Text = $"{ii}" }; pub1.Publish(msg); pub2.Publish(msg); }; } private static IPublisher h_generics() { IPublisher pub = new Publisher(); ISubscriber sub1 = new ConsoleSubscriber(); ISubscriber sub2 = new ColoredConsoleSubscriber(); pub.Subscribe(sub1); pub.Subscribe(sub2); return pub; } private static IPublisher h_fixedClasses() { IPublisher pub = new MsgPublisher(); ISubscriber sub1 = new MsgConsoleSubscriber(); ISubscriber sub2 = new MsgColoredConsoleSubscriber(); pub.Subscribe(sub1); pub.Subscribe(sub2); return pub; } } }