例如:
这是一个简单的课程。
class Hero
{
public string faction;
public string name;
public HeroType herotype;
}
这是XML对应物。
<Hero>
<android>
<Faction>evil</Faction>
<nombre>android</nombre>
</android>
</Hero>
为了序列化信息,属性必须完全相同吗?
我的主要目的是使用我的XML文件中的信息将信息“加载”到Hero类。
答案 0 :(得分:4)
您可以使用[XmlElement(...)]装饰字段以指定备用名称。它们也不必处于相同的顺序。但是,您指定的Xml不适合您指定的类的结构。
将您的Xml修改为以下内容:
<Hero>
<Name>android</Name>
<Faction>evil</Faction>
<HeroType>Agility</HeroType>
</Hero>
答案 1 :(得分:0)
除非您另行指定(如Aviad P.所说,通过使用[XmlElement()]
属性修饰属性),XML中的名称将与属性名称完全匹配,反之亦然。
订购应该是微不足道的。我说“应该是”因为它实际上是否 无关紧要取决于你如何设计你的课程。
虽然一般来说最好让属性设置器没有副作用,但是当你处理XML反序列化时,它是必不可少的。在反序列化期间,属性将按它们在XML中出现的顺序设置为它们的值。
所以如果你有这个课程:
public class Test
{
private string _Foo;
public string Foo { set { _Foo = value; _Baz="Foo"; } get { return _Foo; }}
private string _Bar;
public string Bar { set { _Bar = value; _Baz="Bar"; } get { return _Bar; }}
private string _Baz;
public string Baz { set { _Baz = value; } get { return _Baz; }}
}
然后在Foo
之前显示Bar
的XML会将Baz
设置为“Foo”,而在Bar
之前显示Foo
的XML将设置{ {1}}到“酒吧”。