Delegate-Example

CSharp · Console

/Program.cs

using System;
					
public class Program
{
	public static void Main()
	{
		MyClass2 class2 = new MyClass2();
		Logger1 log1 = new Logger1();
		class2.Log += log1.Log;
		Logger2 log2 = new Logger2();
		class2.Log += log2.Log;
		
        class2.DoSomeProcess();
	}
	public class MyClass2
    {
        public delegate void LogHandler(string message);
        public LogHandler Log;

        public void DoSomeProcess()
        {
            Log("Process Started");//class is not aware of logging implementation
			/* Do the tasks **/
            Log("Process Completed");//class is not aware of logging implementation
        }
      
    }

    public class Logger1
    {
        public void Log(string message)
        {
            Console.WriteLine("Logger 1 (Disk) - "+message);
        }
    }
	public class Logger2
    {
        public void Log(string message)
        {
            Console.WriteLine("Logger 2 (DB or web)- "+message);
        }
    }
}
;