C#委托delegate的一个应用实例
时间:2020-07-10 13:22:44
收藏:0
阅读:84
委托是自定义的方法的一种类型,与声明的委托具有相同参数以及返回值类型,即可使用委托来调用该方法
使用delegate关键字申明委托
使用委托可以降低耦合性,提高可维护性
——————————————————————————————————————————————————————————
下面是一个解耦实例:
原始写法:

public void TestOne(string name) { if (name == "A") { #region 业务逻辑 //........... #endregion Console.WriteLine("我是方法A:{0}", name); } else if (name == "B") { #region 业务逻辑 //........... #endregion Console.WriteLine("我是方法B{0}", name); } else if (name == "C") { #region 业务逻辑 //........... #endregion Console.WriteLine("我是方法C{0}", name); } }
使用委托解耦:

public class MyDelegate { /// <summary> /// 构造函数初始化MyDic /// </summary> public MyDelegate() { MyDic.Add(MyEnum.ActionA, ActionA); MyDic.Add(MyEnum.ActionB, ActionB); MyDic.Add(MyEnum.ActionC, ActionC); } public Dictionary<MyEnum, DelegateOne> MyDic = new Dictionary<MyEnum, DelegateOne>(); public enum MyEnum { ActionA, ActionB, ActionC } //使用委托解耦,如需拓展业务,只需要增加一个方法即可 public void TestDelegateOne(string name, DelegateOne action) { action(name); } private void ActionA(string name) { #region 业务逻辑 //........... #endregion Console.WriteLine("我是方法A:{0}", name); } private void ActionB(string name) { #region 业务逻辑 //........... #endregion Console.WriteLine("我是方法B{0}", name); } private void ActionC(string name) { #region 业务逻辑 //........... #endregion Console.WriteLine("我是方法C{0}", name); } }
调用:

MyDelegate md = new MyDelegate(); md.TestDelegateOne("解耦啦", new DelegateOne(md.MyDic[MyDelegate.MyEnum.ActionA]));
评论(0)