public static ResponseMessageBase CreateFromRequestMessage(IRequestMessageBase requestMessage, ResponseMsgType msgType)
        {
            ResponseMessageBase responseMessage = null;
            switch (msgType)
            {
                case ResponseMsgType.Text:
                    responseMessage = new ResponseMessageText()
                                         {
                                             ToUserName = requestMessage.FromUserName,
                                             FromUserName = requestMessage.ToUserName,
                                             CreateTime = requestMessage.CreateTime,//这个时间不是Ticks,用DateTime.Now会出错
                                             MsgType = msgType
                                         };
                    break;
                case ResponseMsgType.News:
                    responseMessage = new ResponseMessageNews()
                                           {
                                               ToUserName = requestMessage.FromUserName,
                                               FromUserName = requestMessage.ToUserName,
                                               CreateTime = requestMessage.CreateTime,
                                               MsgType = msgType
                                           };
                    break; break;
                default:
                    throw new ArgumentOutOfRangeException("msgType");
            }

            return responseMessage;
        }
        public static ResponseMessageBase CreateFromRequestMessage(IRequestMessageBase requestMessage, ResponseMsgType msgType)
        {
            ResponseMessageBase responseMessage = null;
            try
            {
                switch (msgType)
                {
                    case ResponseMsgType.Text:
                        responseMessage = new ResponseMessageText()
                                             {
                                                 ToUserName = requestMessage.FromUserName,
                                                 FromUserName = requestMessage.ToUserName,
                                                 CreateTime = DateTime.Now,//使用当前最新事件
                                                 MsgType = msgType
                                             };
                        break;
                    case ResponseMsgType.News:
                        responseMessage = new ResponseMessageNews()
                                               {
                                                   ToUserName = requestMessage.FromUserName,
                                                   FromUserName = requestMessage.ToUserName,
                                                   CreateTime = DateTime.Now,//使用当前最新事件
                                                   MsgType = msgType
                                               };
                        break; break;
                    case ResponseMsgType.Music:
                        responseMessage = new ResponseMessageMusic()
                                              {
                                                  ToUserName = requestMessage.FromUserName,
                                                  FromUserName = requestMessage.ToUserName,
                                                  CreateTime = DateTime.Now,//使用当前最新事件
                                                  MsgType = msgType
                                              };
                        break;
                    default:
                        throw new UnknownRequestMsgTypeException(string.Format("ResponseMsgType没有为 {0} 提供对应处理程序。", msgType), new ArgumentOutOfRangeException());
                }
            }
            catch (Exception ex)
            {
                throw new WeixinException("CreateFromRequestMessage过程发生异常", ex);
            }

            return responseMessage;
        }
        public static ResponseMessageBase CreateFromRequestMessage(IRequestMessageBase requestMessage, ResponseMsgType msgType)
        {
            ResponseMessageBase responseMessage = null;

            try
            {
                switch (msgType)
                {
                case ResponseMsgType.Text:
                    responseMessage = new ResponseMessageText();
                    break;

                case ResponseMsgType.News:
                    responseMessage = new ResponseMessageNews();
                    break;

                case ResponseMsgType.Music:
                    responseMessage = new ResponseMessageMusic();
                    break;

                case ResponseMsgType.Image:
                    responseMessage = new ResponseMessageImage();
                    break;

                case ResponseMsgType.Voice:
                    responseMessage = new ResponseMessageVoice();
                    break;

                case ResponseMsgType.Video:
                    responseMessage = new ResponseMessageVideo();
                    break;

                case ResponseMsgType.Transfer_Customer_Service:
                    responseMessage = new ResponseMessageTransfer_Customer_Service();
                    break;

                default:
                    throw new UnknownRequestMsgTypeException(string.Format("ResponseMsgType没有为 {0} 提供对应处理程序。", msgType), new ArgumentOutOfRangeException());
                }

                responseMessage.ToUserName   = requestMessage.FromUserName;
                responseMessage.FromUserName = requestMessage.ToUserName;
                responseMessage.CreateTime   = DateTime.Now;               //使用当前最新时间
            }
            catch (Exception ex)
            {
                throw new WeixinException("CreateFromRequestMessage过程发生异常", ex);
            }

            return(responseMessage);
        }
        private static WorkResponseMessageBase CreateFromRequestMessage(IWorkRequestMessageBase requestMessage, ResponseMsgType msgType)
        {
            //注意:SDK 内部此方法仍然是重要的最终执行的方法,只是提供了简化的重写方法,不建议外部直接调用。

            WorkResponseMessageBase responseMessage = null;

            try
            {
                switch (msgType)
                {
                case ResponseMsgType.Text:
                    responseMessage = new ResponseMessageText();
                    break;

                case ResponseMsgType.News:
                    responseMessage = new ResponseMessageNews();
                    break;

                case ResponseMsgType.Image:
                    responseMessage = new ResponseMessageImage();
                    break;

                case ResponseMsgType.Voice:
                    responseMessage = new ResponseMessageVoice();
                    break;

                case ResponseMsgType.Video:
                    responseMessage = new ResponseMessageVideo();
                    break;

                case ResponseMsgType.MpNews:
                    responseMessage = new ResponseMessageMpNews();
                    break;

                case ResponseMsgType.NoResponse:
                    responseMessage = new WorkResponseMessageNoResponse();
                    break;

                default:
                    throw new UnknownRequestMsgTypeException(string.Format("ResponseMsgType没有为 {0} 提供对应处理程序。", msgType), new ArgumentOutOfRangeException());
                }

                responseMessage.ToUserName   = requestMessage.FromUserName;
                responseMessage.FromUserName = requestMessage.ToUserName;
                responseMessage.CreateTime   = SystemTime.Now;               //使用当前最新时间
            }
            catch (Exception ex)
            {
                throw new WeixinException("CreateFromRequestMessage过程发生异常", ex);
            }

            return(responseMessage);
        }
Beispiel #5
0
 /// <summary>
 /// 从 Xml 转换 RequestMessage 对象的处理(只是创建实例,不填充数据)
 /// </summary>
 /// <param name="responseMsgType">RequestMsgType</param>
 /// <param name="doc">ResponseMessage 的明文 XML</param>
 /// <returns></returns>
 public abstract TResponse GetResponseEntityMappingResult(ResponseMsgType responseMsgType, XDocument doc);
Beispiel #6
0
        //public virtual ResponseMessageType MsgType
        //{
        //    get { return ResponseMessageType.Text; }
        //}

        /// <summary>
        /// 获取响应类型实例,并初始化
        /// <para>如果是直接调用,建议使用CreateFromRequestMessage&lt;T&gt;(IRequestMessageBase requestMessage)取代此方法</para>
        /// </summary>
        /// <param name="requestMessage">请求</param>
        /// <param name="msgType">响应类型</param>
        /// <returns></returns>
        //[Obsolete("建议使用CreateFromRequestMessage<T>(IRequestMessageBase requestMessage)取代此方法")]
        private static IResponseMessageBase CreateFromRequestMessage(IRequestMessageBase requestMessage, ResponseMsgType msgType, MessageEntityEnlightener enlighten)
        {
            IResponseMessageBase responseMessage = null;

            try
            {
                switch (msgType)
                {
                case ResponseMsgType.Text:
                    responseMessage = enlighten.NewResponseMessageText();    // new ResponseMessageText();
                    break;

                case ResponseMsgType.News:
                    responseMessage = enlighten.NewResponseMessageNews();    // new ResponseMessageNews();
                    break;

                case ResponseMsgType.Music:
                    responseMessage = enlighten.NewResponseMessageMusic();    // new ResponseMessageMusic();
                    break;

                case ResponseMsgType.Image:
                    responseMessage = enlighten.NewResponseMessageImage();    // new ResponseMessageImage();
                    break;

                case ResponseMsgType.Voice:
                    responseMessage = enlighten.NewResponseMessageVoice();    // new ResponseMessageVoice();
                    break;

                case ResponseMsgType.Video:
                    responseMessage = enlighten.NewResponseMessageVideo();    // new ResponseMessageVideo();
                    break;

                case ResponseMsgType.Transfer_Customer_Service:
                    responseMessage = enlighten.NewResponseMessageTransfer_Customer_Service();    // new ResponseMessageTransfer_Customer_Service();
                    break;

                case ResponseMsgType.NoResponse:
                    responseMessage = new ResponseMessageNoResponse();
                    break;

                default:
                    throw new UnknownRequestMsgTypeException(string.Format("ResponseMsgType没有为 {0} 提供对应处理程序。", msgType), new ArgumentOutOfRangeException());
                }
            }
            catch (Exception ex)
            {
                throw new MessageHandlerException("CreateFromRequestMessage过程发生异常", ex);
            }

            return(responseMessage);
        }
Beispiel #7
0
 public override IResponseMessageBase GetResponseEntityMappingResult(ResponseMsgType responseMsgType, XDocument doc = null)
 {
     throw new System.NotImplementedException();
 }
Beispiel #8
0
        public static ResponseMessageBase CreateFromRequestMessage(IRequestMessageBase requestMessage, ResponseMsgType msgType)
        {
            ResponseMessageBase responseMessage = null;

            try
            {
                switch (msgType)
                {
                case ResponseMsgType.Text:
                    responseMessage = new ResponseMessageText()
                    {
                        ToUserName   = requestMessage.FromUserName,
                        FromUserName = requestMessage.ToUserName,
                        CreateTime   = DateTime.Now,                       //使用当前最新时间
                        //MsgType = msgType
                    };
                    break;

                case ResponseMsgType.News:
                    responseMessage = new ResponseMessageNews()
                    {
                        ToUserName   = requestMessage.FromUserName,
                        FromUserName = requestMessage.ToUserName,
                        CreateTime   = DateTime.Now,                         //使用当前最新时间
                        //MsgType = msgType
                    };
                    break;

                case ResponseMsgType.Music:
                    responseMessage = new ResponseMessageMusic()
                    {
                        ToUserName   = requestMessage.FromUserName,
                        FromUserName = requestMessage.ToUserName,
                        CreateTime   = DateTime.Now,                        //使用当前最新事件
                        //MsgType = msgType
                    };
                    break;

                default:
                    throw new UnknownRequestMsgTypeException(string.Format("ResponseMsgType没有为 {0} 提供对应处理程序。", msgType), new ArgumentOutOfRangeException());
                }
            }
            catch (Exception ex)
            {
                throw new WeixinException("CreateFromRequestMessage过程发生异常", ex);
            }

            return(responseMessage);
        }
Beispiel #9
0
 public override SuccessResponseMessage GetResponseEntityMappingResult(ResponseMsgType responseMsgType, XDocument doc = null)
 {
     throw new NotImplementedException();//不需要记录上下文,所以这里 ResponseMessage 消息可以忽略
 }
 /// <summary>
 /// 创建XmlElement节点。
 /// </summary>
 /// <param name="doc">xml文档</param>
 /// <param name="name">子节点名称</param>
 /// <param name="data">子节点包含的数据</param>
 protected virtual XmlElement CreateXmlElement(XmlDocument doc, string name, ResponseMsgType data)
 {
     return(CreateXmlElement(doc, name, data.ToString("g"), XmlNodeType.CDATA));
 }
        public static ResponseMessageBase CreateFromRequestMessage(IRequestMessageBase requestMessage, ResponseMsgType msgType)
        {
            ResponseMessageBase responseMessageBase = null;

            try
            {
                throw new UnknownRequestMsgTypeException($"ResponseMsgType没有为 {msgType} 提供对应处理程序。", new ArgumentOutOfRangeException());
            }
            catch (Exception inner)
            {
                throw new WeixinException("CreateFromRequestMessage过程发生异常", inner);
            }
        }