NServiceBus.XmlSerialization.WriteObject C# (CSharp) Method

WriteObject() public method

public WriteObject ( System.Xml.Linq.XElement elem, string name, Type type, object value, bool useNS = false ) : void
elem System.Xml.Linq.XElement
name string
type System.Type
value object
useNS bool
return void
        void WriteObject(XElement elem, string name, Type type, object value, bool useNS = false)
        {
            if (type == typeof(object) && value.GetType().IsSimpleType())
            {
                var typeOfValue = value.GetType();
                var ns = (XNamespace) typeOfValue.Name;
                var prefix = typeOfValue.Name.ToLower();
                if (!elem.Attributes().Any(a => a.IsNamespaceDeclaration && a.Name.LocalName == prefix))
                {
                    elem.Add(new XAttribute(XNamespace.Xmlns + prefix, ns.NamespaceName));
                }

                elem.Add(new XElement(ns + name, value));

                return;
            }

            if (useNS)
            {
                var baseTypes = GetBaseTypes();
                WriteElementNamespaces(elem, baseTypes);
            }
            else
            {
                var xe = new XElement(name);
                elem.Add(xe);
                elem = xe;
            }

            Write(elem, type, value);
        }