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)
为什么成员没有被序列化?
您的房产不公开.
XmlSerialization 仅序列化公共字段和属性.
XML序列化是将对象的公共属性和字段转换为串行格式的过程
字段和属性(实际上是所有成员)的默认可访问性在c#中是私有的.
同时实现ISerializable对XmlSerialization(可能是IXmlSerializable)没有影响.
[Serializable]属性也不是,而是需要其中一个或多个.