Сериализация

Сериализация
Atom
11/16/2010
anothar


Добрый день, Михаил. Пытаюсь воспользоваться вашей сериализацией. Возникло несколько вопросов:1) как объявить XML-атрибут. 2)как объявить корень сериализации( то есть название типа) 3) есть ли у Вас какая-нить документация по вашей сериализации. Пришлось отказаться от родного XmlSerializer ибо как я узнал он не умеет десериализовать типы типа internal. Вот пример моего кода:


 [XmlRoot(ElementName = "result")]
    public class CommandResult
    {
        private static XmlSerializer _serializer;

        protected static XmlSerializer Serializer
        {
            get
            {
                if (_serializer == null)
                {
                    _serializer = new XmlSerializer(typeof(CommandResult));
                }
                return _serializer;
            }
        }

        [XmlAttribute("success")]
        public bool Success
        {
            get;
            set;
        }

        [XmlAttribute("transactionid")]
        public String TransactionId
        {
            get;
            set;
        }

        [XmlElement("message")]
        public String Message
        {
            get;
            set;
        }

        [XmlIgnore]
        public int? Difference
        {
            get;
            set;
        }

        [XmlAttribute("diff")]
        public String DifferenceAsString
        {
            get
            {
                if (Difference == null) return null;
                else
                    return ((int)Difference).ToString();
            }
            set
            {
                if (value == null) Difference = null;
                else
                    Difference = int.Parse(value);
            }

        }

        public static CommandResult FromXmlString(String s)
        {
            s = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + s;
            XmlSerializer serializer = Serializer;
            MemoryStream str = new MemoryStream(Encoding.UTF8.GetBytes(s));
            CommandResult result = (CommandResult)serializer.Deserialize(str);
            str.Close();
            return result;
        }
    }


Tags:


Thanks:


Mikhail Sukhov

Avatar
Date: 11/17/2010
Reply


XmlRootAttribute == EntityAttribute. XmlElementAttribute == FieldAttribute XmlIgnoreAttribute == IgnoreAttribute

var serializer = new XmlSerializer(); serializer.Deserialize(serializer.Serialize(new CommandResult());

Thanks:

anothar

Avatar
Date: 11/17/2010
Reply


А XmlAttribute?

Thanks:

Mikhail Sukhov

Avatar
Date: 11/18/2010
Reply


Андрей Ефимов: А XmlAttribute?

Увы нет. Умеет только в ноды сериализовать.

Thanks:

anothar

Avatar
Date: 11/18/2010
Reply


Печально :( Придется как-нить пошаманить...

Thanks:


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy