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(); }
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); } } } }