单声道中的XML序列化问题

Chr*_*all 1 c# mono xml-serialization

这是我的班级:

[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;
        }
Run Code Online (Sandbox Code Playgroud)

剪断

我从Mono Web服务返回它们的数组,如下所示:

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

但我得到的是:

<?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>
Run Code Online (Sandbox Code Playgroud)

为什么成员没有被序列化?

Shu*_*oUk 8

您的房产不公开.
XmlSerialization 仅序列化公共字段和属性.

XML序列化是将对象的公共属性和字段转换为串行格式的过程

字段和属性(实际上是所有成员)的默认可访问性在c#中是私有的.

同时实现ISerializable对XmlSerialization(可能是IXmlSerializable)没有影响.
[Serializable]属性也不是,而是需要其中一个或多个.

  • 咄!这将教会我在影响下的代码:) (2认同)