private static ReceiveXmlMessage ConvertReceiveXmlToReceiveXmlMessage(string receiveXml) { Dictionary <string, string> dictionary = XmlHelper.Read(receiveXml); string text = dictionary["MsgType"]; ReceiveXmlMessage receiveXmlMessage = null; if (text.Equals("text")) { receiveXmlMessage = new ReceiveXmlTextMessage(); } else if (text.Equals("image")) { receiveXmlMessage = new ReceiveXmlImageMessage(); } else if (text.Equals("voice")) { receiveXmlMessage = new ReceiveXmlVoiceMessage(); } else if (text.Equals("video")) { receiveXmlMessage = new ReceiveXmlVideoMessage(); } else if (text.Equals("location")) { receiveXmlMessage = new ReceiveXmlLocationMessage(); } else if (text.Equals("link")) { receiveXmlMessage = new ReceiveXmlLinkMessage(); } else if (text.Equals("event")) { receiveXmlMessage = new ReceiveXmlEventMessage(); } if (receiveXmlMessage != null) { Type type = receiveXmlMessage.GetType(); PropertyInfo[] properties = type.GetProperties(); PropertyInfo[] array = properties; for (int i = 0; i < array.Length; i++) { PropertyInfo propertyInfo = array[i]; object[] customAttributes = propertyInfo.GetCustomAttributes(typeof(MessagePropertyNameAttribute), true); if (customAttributes != null && customAttributes.Length > 0) { MessagePropertyNameAttribute messagePropertyNameAttribute = (MessagePropertyNameAttribute)customAttributes[0]; if (dictionary.ContainsKey(messagePropertyNameAttribute.PropertyName)) { string value = dictionary[messagePropertyNameAttribute.PropertyName]; propertyInfo.SetValue(receiveXmlMessage, value, null); } } } receiveXmlMessage.Xml = receiveXml; } return(receiveXmlMessage); }
private static ReceiveXmlMessageType GetReceiveXmlMessageType(ReceiveXmlMessage receiveXmlMessage) { if (receiveXmlMessage.MsgType.ToLower().Equals("text")) { return(ReceiveXmlMessageType.Text); } if (receiveXmlMessage.MsgType.ToLower().Equals("image")) { return(ReceiveXmlMessageType.Image); } if (receiveXmlMessage.MsgType.ToLower().Equals("voice")) { return(ReceiveXmlMessageType.Voice); } if (receiveXmlMessage.MsgType.ToLower().Equals("video")) { return(ReceiveXmlMessageType.Video); } if (receiveXmlMessage.MsgType.ToLower().Equals("location")) { return(ReceiveXmlMessageType.Location); } if (receiveXmlMessage.MsgType.ToLower().Equals("link")) { return(ReceiveXmlMessageType.Link); } if (!receiveXmlMessage.MsgType.ToLower().Equals("event")) { return(ReceiveXmlMessageType.Undefined); } ReceiveXmlEventMessage receiveXmlEventMessage = receiveXmlMessage as ReceiveXmlEventMessage; if (!string.IsNullOrEmpty(receiveXmlEventMessage.Ticket)) { if (receiveXmlEventMessage.Event.ToLower().Equals("subscribe")) { return(ReceiveXmlMessageType.Event_QRCode_Subscribe); } if (receiveXmlEventMessage.Event.ToLower().Equals("scan")) { return(ReceiveXmlMessageType.Event_QRCode_Scan); } return(ReceiveXmlMessageType.Undefined); } else { if (receiveXmlEventMessage.Event.ToLower().Equals("view")) { return(ReceiveXmlMessageType.Event_View); } if (receiveXmlEventMessage.Event.ToLower().Equals("click")) { return(ReceiveXmlMessageType.Event_Click); } if (receiveXmlEventMessage.Event.ToLower().Equals("location")) { return(ReceiveXmlMessageType.Event_Location); } if (receiveXmlEventMessage.Event.ToLower().Equals("subscribe")) { return(ReceiveXmlMessageType.Event_Subscribe); } if (receiveXmlEventMessage.Event.ToLower().Equals("unsubscribe")) { return(ReceiveXmlMessageType.Event_UnSubscribe); } return(ReceiveXmlMessageType.Undefined); } }