Exemplo n.º 1
0
        public void WriteRoot(Object instance, String customName = null, Boolean ignoreAttributes = false)
        {
            if (instance == null)
            {
                throw new ArgumentNullException();
            }
            if (this.AsAttribute)
            {
                throw new InvalidOperationException();
            }
            Contract.Requires <InvalidOperationException>(
                this.XmlWriter.WriteState == WriteState.Content ||
                this.XmlWriter.WriteState == WriteState.Element ||
                this.XmlWriter.WriteState == WriteState.Start
                );

            String rootName = customName;

            if (rootName == null)
            {
                rootName = this.ElementName;
            }

            XmlRootAttribute xmlRootAttribute = (this.Serializer.RootAttribute as XmlRootAttribute);

            if (xmlRootAttribute.Comment != null)
            {
                this.XmlWriter.WriteComment(xmlRootAttribute.Comment);
            }

            if (this.XmlWriter.WriteState == WriteState.Start)
            {
                this.XmlWriter.WriteStartDocument();
            }

            this.XmlWriter.WriteStartElement(rootName, xmlRootAttribute.XmlNamespace);

            if (!ignoreAttributes)
            {
                for (Int32 i = 0; i < this.Serializer.SerializableMembers.Count; i++)
                {
                    XmlSerializableMember member = this.Serializer.SerializableMembers[i];
                    if (member.MemberInfo.IsAttribute)
                    {
                        this.WriteMember(member, member.GetValue(instance), true);
                    }
                }
            }
        }