C# IXmlSerializable更改xml标记名

C# IXmlSerializable更改xml标记名,c#,ixmlserializable,C#,Ixmlserializable,我有以下收集的课程 public class MyClass:IXmlSerializable { int vesrion; private Collection<int> testcoll; } 公共类MyClass:IXmlSerializable { 维斯里翁国际酒店; 私人收藏; } 为了序列化它,我编写了WriteXML,如下所示 public void WriteXml(XmlWriter writer) { writer.WriteAttr

我有以下收集的课程

public class MyClass:IXmlSerializable
{
    int vesrion;
    private Collection<int> testcoll;
}
公共类MyClass:IXmlSerializable
{
维斯里翁国际酒店;
私人收藏;
}
为了序列化它,我编写了WriteXML,如下所示

public void WriteXml(XmlWriter writer)
{

    writer.WriteAttributeString("Version", this.vesrion.ToString());    

    XmlSerializer serializer = new XmlSerializer(typeof(Collection<int>));
    serializer.Serialize(writer, Testcoll);
 }
public void WriteXml(XmlWriter)
{
WriteAttributeString(“Version”,this.vesrion.ToString());
XmlSerializer serializer=新的XmlSerializer(typeof(Collection));
serializer.Serialize(writer,Testcoll);
}
现在输出xml的标签“ArrayOfInt”与Testcoll相同。但我想把这个名字改成不同的“MyCollection”


请告诉我如何实现此目的。

在字段上使用属性,如下所示:

[XmlElement(ElementName = "MyCollection")]
private Collection<int> testcoll;
[xmlement(ElementName=“MyCollection”)]
私人收藏;
编辑:@comments,错过了这些细节,请参见下面有效的答案(编译和测试)

XmlSerializer serializer=newxmlserializer(typeof(Collection),newxmlrootattribute(“MyCollection”);
serializer.Serialize(writer,Testcoll);

另一种不创建新XmlSerializer的方法:

public void WriteXml(XmlWriter writer)
{
    writer.WriteAttributeString("Version", vesrion.ToString(CultureInfo.InvariantCulture));
    writer.WriteStartElement("MyCollection");
    foreach (int collint in Testcoll)
    {
        writer.WriteElementString("int", collint.ToString(CultureInfo.InvariantCulture));
    }
    writer.WriteEndElement();
}

我认为这是行不通的,因为他没有使用默认的XmlSerializer实现序列化
MyClass
。它来自于附加了一个默认的XmlSerialization类型
Collection
。我现在不在办公室,我将在明天尝试并让您知道。通过查看已编辑的代码,我认为它肯定会起作用:)
public void WriteXml(XmlWriter writer)
{
    writer.WriteAttributeString("Version", vesrion.ToString(CultureInfo.InvariantCulture));
    writer.WriteStartElement("MyCollection");
    foreach (int collint in Testcoll)
    {
        writer.WriteElementString("int", collint.ToString(CultureInfo.InvariantCulture));
    }
    writer.WriteEndElement();
}