示例#1
0
        public static void TestRun()
        {
            TestDg dg1 = new TestDg(Method1);
            TestDg dg2 = new TestDg(new DelegateChainTest().Method2);
            TestDg dg3 = new TestDg(new DelegateChainTest().Method3);
            //定义委托链
            TestDg dgChain = null;

            dgChain += dg1;
            dgChain += dg2;
            dgChain += dg3;
            dgChain += dg2;
            dgChain -= dg2;
            CallDgChain(dgChain);
            //Console.WriteLine(dgChain(11));
            Console.ReadKey();
        }
示例#2
0
 private static void CallDgChain(TestDg dgChain)
 {
     if (dgChain != null)
     {
         //遍历委托对象的调用列表,调用关联的所有委托对象
         Delegate[] dgArray = dgChain.GetInvocationList();
         foreach (TestDg item in dgArray)
         {
             try
             {
                 Console.WriteLine(item(11) + Environment.NewLine);
             }
             catch (Exception ex)
             {
                 Console.WriteLine($"{item.Method.Name} {ex.Message} " + Environment.NewLine);
             }
         }
     }
 }