gpt4 book ai didi

c# - 覆盖数据集设计器类中定义的 XmlRoot 属性

转载 作者:行者123 更新时间:2023-11-30 16:35:17 24 4
gpt4 key购买 nike

我有一个名为 DocumentDataSet 的数据集和一个名为 Document 的类。

当数据集被序列化时,我需要将它的根命名为“Document”,因为我正在与第 3 方网络服务进行通信。

虽然我想在数据集的部分类中定义属性 XmlRoot,但我无法添加 XmlRoot 的副本,因为它已经在设计器类中定义。

[global::System.Xml.Serialization.XmlRootAttribute("DocumentDataSet")]
public partial class DocumentDataSet : global::System.Data.DataSet { ... }

我可以在设计器类中更改它,但每次我在设计中打开数据集时它都会被重置。

有没有一种方法可以覆盖 XmlRoot 或使其使用与其类名不同的名称进行序列化?

最佳答案

您可以使用 XmlSerializer constructor接受 XmlRootAttribute 表示要使用的 XML 根元素。

new XmlSerializer(typeof(DocumentDataSet), new XmlRootAttribute("Document"));

也可以这样做:

class DocumentDataSet : DataSet
{
public new string GetXml()
{
return base.GetXml().Replace("DocumentDataSet ", "Document");
}
}

如果您最终采用这种方法,一个简单的 Replace 是不够的,但这只是为了说明目的。另请注意,如果您通过基类 DataSet 引用文档数据集实例,则后一种方法将不起作用。

DataSet ds = new DocumentDataSet();

ds.GetXml(); // Wrong

关于c# - 覆盖数据集设计器类中定义的 XmlRoot 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1947213/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com