예제 #1
0
        static void Main(string[] args)
        {
            Publisher p = new Publisher();
            Subscriber s1 = new Subscriber();
            Subscriber s2 = new Subscriber();
            //声明为事件的委托无法直接调用Combine方法
            //以下两句将无法通过编译
            //p.handlers = System.Delegate.Combine(p.handlers, new MyMultiDelegate(s1.MyMethod)) as MyMultiDelegate;
            //p.handlers = System.Delegate.Combine(p.handlers, new MyMultiDelegate(s2.MyMethod)) as MyMultiDelegate;
            //必须使用+=运算符给事件追加委托
            //p.handlers+=new MyMultiDelegate(s1.MyMethod);
            //p.handlers+=new MyMultiDelegate(s2.MyMethod);
            p.handlers += s1.MyMethod;
            p.handlers += s1.MyMethod;
            //声明为事件的委托也不能直接调用,下面这句无法通过编译
            //p.handlers(10);
            //只能通过类的公有方法间接地引发事件
            p.FireEvent();

            Console.ReadKey();
        }