C#委托delegate的一个应用实例

2020-12-30 10:29

阅读:708

标签:技术   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
{
        /// 
        /// 构造函数初始化MyDic
        /// 
        public MyDelegate()
        {
            MyDic.Add(MyEnum.ActionA, ActionA);
            MyDic.Add(MyEnum.ActionB, ActionB);
            MyDic.Add(MyEnum.ActionC, ActionC);
        }

        public Dictionary MyDic = new 
        Dictionary();
        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]));
调用

 

C#委托delegate的一个应用实例

标签:技术   add   string   reg   delegate   src   代码   图片   cti   

原文地址:https://www.cnblogs.com/Script1/p/13278588.html


评论


亲,登录后才可以留言!