Using a delegate to choose the right function to call. : Delegate parameter : Delegate C# Examples


C# Examples » Delegate » Delegate parameter »

 

Using a delegate to choose the right function to call.









    
using  System;
using  System.Collections;

public  delegate  bool  HandleKeyword(string  key);

public  class  Parser  {
        Hashtable  parseTable;

        public  Parser()  {
                parseTable  =  new  Hashtable();
        }

        public  void  AddKeywordHandler(string  key,  HandleKeyword  handler)  {
                parseTable.Add(key,  handler);
        }

        public  bool  ParseKeyword(string  key)  {
                HandleKeyword  func  =  (HandleKeyword)parseTable[key];
                if  (func  ==  null)
                        return  false;

                return  func(key);
        }
}

public  class  HandleHello  {
        public  static  bool  HandleIt(string  s)  {
                Console.WriteLine("HandleHello::HandleIt  {0}",  s);
                return  true;
        }
}

public  class  HandleGoodbye  {
        public  static  bool  HandleIt(string  s)  {
                Console.WriteLine("HandleGoodbye::HandleIt  {0}",  s);
                return  true;
        }
}

public  class  HandleWhy  {
        public  static  bool  HandleIt(string  s)  {
                Console.WriteLine("HandleWhy::HandleIt  {0}",  s);
                return  true;
        }
}

class  MainClass  {
        public  static  void  Main(string[]  args)  {
                Parser  p  =  new  Parser();

                p.AddKeywordHandler("hello",  new  HandleKeyword(HandleHello.HandleIt));
                p.AddKeywordHandler("goodbye",  new  HandleKeyword(HandleGoodbye.HandleIt));
                p.AddKeywordHandler("why",  new  HandleKeyword(HandleWhy.HandleIt));
                for  (int  i  =  0;  i  <  args.Length;  ++i)
                        if  (p.ParseKeyword(args[i])  ==  false)
                                Console.WriteLine("Unknown  keyword  {0}",  args[i]);
        }
}
    
   
  
   




HTML code for linking to this page:

Follow Navioo On Twitter

C# Examples

 Navioo Delegate
» Delegate parameter