Проблемы XML-сериализации в Mono - PullRequest
1 голос
/ 30 августа 2009

Вот мой класс:

[Serializable()]
    [XmlRootAttribute("Language")]
    public class Language : ISerializable
    {
        string Id {
            get;
            set;
        }
        string Part2B {
            get;
            set;
        }
        string Part2T {
            get;
            set;
        }
        string Part1 {
            get;
            set;
        }
        string Scope {
            get;
            set;
        }
        string LanguageType {
            get;
            set;
        }
        string RefName {
            get;
            set;
        }
        string Comment {
            get;
            set;
        }

подрезал

Я возвращаю их массив из веб-службы Mono, например:

[WebMethod()]
        [ScriptMethod(ResponseFormat=ResponseFormat.Json)]
        public Language[] GetLanguages()
        {
            List<Language> languages;
            languages = GetLanguageList();
            return languages.ToArray();
        }

Но вот что я получаю:

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfLanguage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/">
  <Language />
  <Language />
  <Language />
  <Language />
</ArrayOfLanguage>

Почему члены не сериализуются?

1 Ответ

8 голосов
/ 30 августа 2009

Ваша собственность не публична.
XmlSerialization только сериализует открытые поля и свойства .

Сериализация XML - это процесс преобразования открытых свойств и полей объекта в последовательный формат

Доступность по умолчанию для полей и свойств (действительно, все члены) - private в c #.

Также реализация ISerializable не влияет на XmlSerialization (это будет IXmlSerializable ).
Атрибут [Serializable] тоже не нужен, вместо этого вам нужно один или несколько из этих .

...