public void OnSerialized(MessageSerializerEventArgs e)
        {
            var handler = Serialized;

            if (handler != null)
            {
                handler(this, e);
            }
        }
        public virtual string Serialize(object message)
        {
            string serializedMessage;

            if (message != null)
            {
                if (message is string)
                {
                    serializedMessage = message.ToString();
                }
                else if (message is Exception)
                {
                    serializedMessage = ((Exception)message).ToXmlString();
                }
                else if (message is DataSet)
                {
                    serializedMessage = ((DataSet)message).GetXml();
                }
                else if (message.GetType().Name.Contains("AnonymousType"))
                {
                    var dic = ToDictionary(message);
                    if (dic.ContainsKey("Exception") &&
                        dic["Exception"] != null &&
                        dic["Exception"] is Exception)
                    {
                        dic["Exception"] = ((Exception)dic["Exception"]).ToXmlString();
                    }
                    var element = CreateXElement("Message", dic);
                    serializedMessage = element.ToString();
                }
                else
                {
                    serializedMessage = _serializer.Serialize(message);
                }
            }
            else
            {
                serializedMessage = "null";
            }

            if (string.IsNullOrEmpty(serializedMessage))
            {
                serializedMessage = "null";
            }

            serializedMessage = serializedMessage.StartsWith("<Message>")
                         ? serializedMessage
                         : string.Format("<Message>{0}</Message>", serializedMessage);

            var eventParameter = new MessageSerializerEventArgs(message, serializedMessage);

            OnSerialized(eventParameter);
            return(eventParameter.SerializedMessage);
        }