【原创】C# 委托与事件的传递与封装案例

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NetworkCommsDotNet;
using NetworkCommsDotNet.Connections;

namespace DelegateDeliveryExample
{
    // 第一步:声明一个委托
    public delegate void NCMessageHandler(PacketHeader header, Connection connection, string message);

    public static class Program
    {
        // 第二步:声明一个委托变量
        public static event NCMessageHandler msgHandler;

        static void Main(string[] args)
        {
            // 第三步:将方法作为参数进行传递
            NCIncomingPacketHandler(MsgHandler);
        }

        public static void MsgHandler(PacketHeader header, Connection connection, string message)
        {
            Console.WriteLine(message);
        }

        public static void NCIncomingPacketHandler(NCMessageHandler handler)
        {
            // 第四步:将传进来的方法注册到委托变量中
            msgHandler += handler;

            // 第五步:调用消息处理函数
            NetworkComms.AppendGlobalIncomingPacketHandler("Message", ProcessIncomingMessage);
        }

        public static void ProcessIncomingMessage(PacketHeader header, Connection connection, string message)
        {
            // 第六步:执行委托变量中注册过的方法
            msgHandler(header, connection, message);
        }
    }
}

你可能感兴趣的:(C#编程)