/// <summary>
        /// 获取XDocument转换后的IResponseMessageBase实例(通常在反向读取日志的时候用到)。
        /// 如果MsgType不存在,抛出UnknownRequestMsgTypeException异常
        /// </summary>
        /// <returns></returns>
        public static IWorkResponseMessageBase GetResponseEntity(XDocument doc)
        {
            WorkResponseMessageBase responseMessage = null;
            ResponseMsgType         msgType;

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

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

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

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

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

                default:
                    throw new UnknownRequestMsgTypeException(string.Format("MsgType:{0} 在ResponseMessageFactory中没有对应的处理程序!", msgType), new ArgumentOutOfRangeException());
                }
                EntityHelper.FillEntityWithXml(responseMessage, doc);
            }
            catch (ArgumentException ex)
            {
                throw new WeixinException(string.Format("ResponseMessage转换出错!可能是MsgType不存在!,XML:{0}", doc.ToString()), ex);
            }
            return(responseMessage);
        }
Exemplo n.º 2
0
 /// <summary>
 /// ResponseMessageBase.CreateFromResponseXml(xml)的扩展方法
 /// </summary>
 /// <param name="xml">返回给服务器的Response Xml</param>
 /// <returns></returns>
 public static IWorkResponseMessageBase CreateResponseMessage(this string xml)
 {
     return(WorkResponseMessageBase.CreateFromResponseXml(xml));
 }
Exemplo n.º 3
0
 /// <summary>
 /// ResponseMessageBase.CreateFromRequestMessage&lt;T&gt;(requestMessage)的扩展方法
 /// </summary>
 /// <typeparam name="T">需要生成的ResponseMessage类型</typeparam>
 /// <param name="requestMessage">IRequestMessageBase接口下的接收信息类型</param>
 /// <returns></returns>
 public static T CreateResponseMessage <T>(this IWorkRequestMessageBase requestMessage) where T : WorkResponseMessageBase
 {
     return(WorkResponseMessageBase.CreateFromRequestMessage <T>(requestMessage));
 }