示例#1
0
        [TestMethod] // -----------------------------------------------------------------------
        public void TestMethod15()
        {
            訂閱者 農夫 = new 訂閱者()
            {
                字 = "農夫"
            };
            訂閱者 商人 = new 訂閱者()
            {
                字 = "商人"
            };
            訂閱者 騎士 = new 訂閱者()
            {
                字 = "騎士"
            };

            報社 王國日報 = new 報社();

            //訂閱
            王國日報.最新新聞 += 農夫.通知我;
            王國日報.最新新聞 += 商人.通知我;
            王國日報.最新新聞 += 騎士.通知我;

            string 消息1 = "魔王降臨啦!!!";

            王國日報.投稿新聞(消息1);
            string 消息2 = "勇者準備出發";

            王國日報.投稿新聞(消息2);

            王國日報.最新新聞.Invoke("假新聞"); // Q: 如何避免被發送假新聞?? A: event keyword
        }
示例#2
0
            public void 通知我(object sender, EventArgs eventArgs)
            {
                報社 報社 = sender as 報社;    // KEY: object to everything
                新聞 新聞 = eventArgs as 新聞; // KEY: EventArgs to everything

                Console.WriteLine($"我是{名字},我已經收到來自{報社.名稱}的{新聞.標題}:{新聞.內容}");
            }
示例#3
0
        [TestMethod] // -----------------------------------------------------------------------
        public void TestMethod4()
        {
            訂閱者 農夫 = new 訂閱者()
            {
                字 = "農夫"
            };
            訂閱者 商人 = new 訂閱者()
            {
                字 = "商人"
            };
            訂閱者 騎士 = new 訂閱者()
            {
                字 = "騎士"
            };

            報社 王國日報 = new 報社();

            //訂閱
            王國日報.最新新聞 += 農夫.通知我;
            王國日報.最新新聞 += 商人.通知我;
            王國日報.最新新聞 += 騎士.通知我;

            string 消息1 = "魔王降臨啦!!!";

            王國日報.投稿新聞(消息1);
            string 消息2 = "勇者準備出發";

            王國日報.投稿新聞(消息2);

            // 王國日報.最新新聞.Invoke("假新聞"); // 保護: 多了event keyword, 讓delegate依然能被外部加入( += )方法,又能禁止被外部執行。
        }
示例#4
0
 protected void On收到最新新聞時(報社 報社, 新聞 新聞)
 {
     最新新聞?.Invoke(報社, 新聞);
 }