当前位置: 首页 > 编程语言 > C#

序列化中基类字段的自定义XML元素名称分享

时间:2023-04-10 21:59:43 C#

序列化中基类字段的自定义XML元素名称如何在序列化过程中更改继承自基类字段的XML元素名称?例如,我有下一个基类:publicclassOne{publicintOneField;}序列化代码:staticvoidMain(){Onetest=newOne{OneField=1};varserializer=newXmlSerializer(typeof(One));TextWriterwriter=newStreamWriter("Output.xml");serializer.Serialize(writer,test);writer.Close();我得到了我需要的东西:1现在我从一个新类创建Ainheritance,并为其添加字段和自定义XML元素名称:publicclassTwo:One{[XmlElement("SecondField")]publicintTwoField;}序列化代码:staticvoidMain(){Twotest=newTwo{OneField=1,TwoField=2};varserializer=newXmlSerializer(typeof(Two));TextWriterwriter=newStreamWriter("Output.xml");serializer.Serialize(writer,test);writer.Close();结果我得到Nextoutput:12问题是我想在此输出中将FirstField更改为FirstField而无需输入基类代码(因为我也将使用它并且名称必须是原始的)。我怎样才能做到这一点?谢谢。试试这个:publicclassTwo:One{privatestaticXmlAttributeOverridesxmlOverrides;publicstaticXmlAttributeOverridesXmlOverrides{get{if(xmlOverrides==null){xmlOverrides=newXmlAttributeOverrides();varattr=newXAttributes();attr.Addlement(newXmlElementAttribute("FirstField"));xmlOverrides.Add(typeof(One),"OneField",attr);}返回xmlOverrides;}}[XmlElement("SecondField")]publicstringTwoField;你的序列化程序初始化更容易:varxmls=newSystem.Xml.Serialization.XmlSerializer(typeof(Two),Two.XmlOverrides);这里有一个解决方法:覆盖子类中的字段,并用您需要的任何名称标记被覆盖的字段。比如以上就是《C#学习教程:序列化中基类字段的自定义XML元素名称》分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望你多多关注—classOne{publicintOneField{get;放;}}类二:一个{[XmlElement("FirstField")]publicnewintOneField{get{returnbase.OneField;}set{base.OneField=value;}}},不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: