如何将Property首字母大写?

有如下的XML及反序列化对象。问题是我想把MenuItem中的children属性的首字母大写,即改成Children,但如果大写就无法反序列化出子节点,请问有什么方法可以搞定?

<?xml version="1.0" encoding="utf-8" ?>
<menus>
  <menu name="a">
    <children>
      <menu name="a1" />
      <menu name="a2" />
      <menu name="a3" />
    </children>
  </menu>
  <menu name="b">
    <children>
      <menu name="b1" />
      <menu name="b2" />
      <menu name="b3">
        <children>
          <menu name="b31" />
          <menu name="b32" />
          <menu name="b33" />
        </children>
      </menu>
    </children>
  </menu>
</menus>
using System.Xml.Serialization;
using System.Xml.Schema;

[XmlRootAttribute(ElementName = "menus", Namespace = "", IsNullable = false)]
public class MenuItems
{

    [XmlElementAttribute("menu", Form = XmlSchemaForm.Unqualified)]
    public MenuItem[] Items { get; set; }
}

[XmlTypeAttribute(AnonymousType = true)]
public class MenuItem
{
    [XmlAttributeAttribute("name")]
    public string Name { get; set; }

    [XmlArrayItemAttribute("menu", typeof(MenuItem), Form = XmlSchemaForm.Unqualified, IsNullable = false)]
    public MenuItem[] children { get; set; }
}
湖上湖
浏览 384回答 8
8回答

HUX布斯

你可以把属性申明成大写开头,但是在 XmlElement 或 XmlArrayItem 里把序列化名称设置为小写开头。

慕尼黑5688855

我们公司的代码规范,xml属性名第一个单词小写,C#属性第一个单词大写。

慕容708150

@沧海一杰: 反序列化之前做一下替换啊,没让你把xml文件中的小写也替换掉啊

白衣染霜花

我怎么看你自己写的代码里面,把属性改为首字母大写完全可以正常运行的呀,你说“想把MenuItem中的children属性的首字母大写,即改成Children,但如果大写就无法反序列化出子节点”,这种情况根本不存在,你再试试看。

料青山看我应如是

可以运行是可以运行,但Children=null,children就不会是null

守着一只汪

设置 要序列化的父节点和子节点  [XmlArray,XmlArrayItem] [XmlArray("children"), XmlArrayItem("menu", typeof(MenuItem), Form = XmlSchemaForm.Unqualified, IsNullable = false)] public MenuItem[] Children { get; set; }
打开App,查看更多内容
随时随地看视频慕课网APP