我可以通过代码而不是属性指定XMLRoot吗?

Abe*_*Abe 6 c# xml-serialization

有没有办法在运行时设置对象或类的xmlroot?

[XmlRoot("data")]
public class MyRoot {
    [XmlElement("bar")]
    public List<RemoteHost> Hosts {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我没有选择修改类MyRoot; 所以,我想指定在使用XmlSerializer将对象序列化为XML之前,我希望将根名称称为"数据".

Mar*_*ell 10

是! 只是:

var serializer = new XmlSerializer(typeof(MyRoot),
    new XmlRootAttribute("data"));
Run Code Online (Sandbox Code Playgroud)

或者更完整,请参阅XmlAttributeOverrides.但是,对于其中任何一个,您必须缓存并重用序列化程序实例,否则您将泄漏程序集.