Delegates and events in C #
Http://www.tracefact.net/CSharp-Programming/Delegates-and-Events-in-CSharp.aspx
/// <summary> ///bad design.///Additional language needs to be changed in the late 3 places: Language enumeration, Switch-case, Methods/// </summary> Public classBaddesign { Public enumLanguage {中文版, Chinese//Add other language } Public voidGreetpeople (stringname, Language Lang) { Switch(lang) { CaseLanguage.English:EnglishGreeting (name); Break; CaseLanguage.Chinese:ChineseGreeting (name); Break; //Add other language } } Public voidEnglishgreeting (stringname) {Console.WriteLine ("Good Morning,"+name); } Public voidChinesegreeting (stringname) {Console.WriteLine ("Good Morning,"+name); } //Add Language Method } /// <summary> ///a relatively good design///Additional language needs to be changed in late 1 places: Language method/// </summary> classGooddesign_delegate { Public voidGreetpeople (stringname, Greetingdelegate makegreeting) {makegreeting (name); } Public voidEnglishgreeting (stringname) {Console.WriteLine ("Good Morning,"+name); } Public voidChinesegreeting (stringname) {Console.WriteLine ("Good Morning,"+name); } //Add Language Method } Public Delegate voidGreetingdelegate (stringname); classProgram {Static voidMain (string[] args) { NewBaddesign (). Greetpeople ("NLH", Delegate_Event.BadDesign.Language.Chinese); NewBaddesign (). Greetpeople ("NLH", Delegate_Event.BadDesign.Language.English); NewGooddesign_delegate (). Greetpeople ("NLH",Newgooddesign_delegate (). chinesegreeting); NewGooddesign_delegate (). Greetpeople ("NLH",Newgooddesign_delegate (). englishgreeting); Console.read (); } }
Delegates and events in C #