コード例 #1
0
        /// <summary>
        /// 解析消息
        /// </summary>
        /// <param name="xml"></param>
        /// <returns></returns>
        public static IMessage ParseMessage(string xml)
        {
            if (string.IsNullOrEmpty(xml))
            {
                throw new ArgumentException("xml为空");
            }

            var dic = UtilityHelper.Xml2Dictionary(xml);

            IMessage        message = null;;
            IMessageReceive messageReceive;

            switch (dic["MsgType"].ToLower())
            {
            case "text":
                messageReceive = new TextMessageReceive();
                message        = (messageReceive as IMessageReceive <TextMessage>).GetEntity(dic);
                break;

            case "image":
                messageReceive = new ImageMessageReceive();
                message        = (messageReceive as IMessageReceive <ImageMessage>).GetEntity(dic);
                break;

            case "voice":
                messageReceive = new VoiceMessageReceive();
                message        = (messageReceive as IMessageReceive <VoiceMessage>).GetEntity(dic);
                break;

            case "video":
                messageReceive = new VideoMessageReceive();
                message        = (messageReceive as IMessageReceive <VideoMessage>).GetEntity(dic);
                break;

            case "shortvideo":
                messageReceive = new ShortVideoMessageReceive();
                message        = (messageReceive as IMessageReceive <ShortVideoMessage>).GetEntity(dic);
                break;

            case "location":
                messageReceive = new LocationMessageReceive();
                message        = (messageReceive as IMessageReceive <LocationMessage>).GetEntity(dic);
                break;

            case "link":
                messageReceive = new LinkMessageReceive();
                message        = (messageReceive as IMessageReceive <LinkMessage>).GetEntity(dic);
                break;

            case "event":
                switch (dic["Event"].ToLower())
                {
                case "subscribe":
                    messageReceive = new SubscribeEvtMessageReceive();
                    message        = (messageReceive as IMessageReceive <SubscribeEvtMessage>).GetEntity(dic);
                    break;

                case "unsubscribe":
                    messageReceive = new UnSubscribeEvtMessageReceive();
                    message        = (messageReceive as IMessageReceive <UnSubscribeEvtMessage>).GetEntity(dic);
                    break;

                case "scan":
                    messageReceive = new ScanEvtMessageReceive();
                    message        = (messageReceive as IMessageReceive <ScanEvtMessage>).GetEntity(dic);
                    break;

                case "location":
                    messageReceive = new LocationEvtMessageReceive();
                    message        = (messageReceive as IMessageReceive <LocationEvtMessage>).GetEntity(dic);
                    break;

                case "click":
                    messageReceive = new ClickEvtMessageReceive();
                    message        = (messageReceive as IMessageReceive <ClickEvtMessage>).GetEntity(dic);
                    break;

                default:
                    break;
                }
                break;

            default:
                break;
            }

            return(message);
        }
コード例 #2
0
ファイル: MainWindow.xaml.cs プロジェクト: chembergj/VSPC
 private void HandleTextMessageReceive(TextMessageReceive textMessageReceive)
 {
 }
コード例 #3
0
ファイル: MainWindow.xaml.cs プロジェクト: highattack30/VSPC
 private void HandleTextMessageReceive(TextMessageReceive textMessageReceive)
 {
 }