标签:技术 add string reg delegate src 代码 图片 cti
委托是自定义的方法的一种类型,与声明的委托具有相同参数以及返回值类型,即可使用委托来调用该方法
使用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]));
标签:技术 add string reg delegate src 代码 图片 cti
原文地址:https://www.cnblogs.com/Script1/p/13278588.html