C# 序列化列表<;元组<;字符串,字符串>&燃气轮机;归于

C# 序列化列表<;元组<;字符串,字符串>&燃气轮机;归于,c#,serialization,C#,Serialization,我想将元组列表序列化为XML属性。例如: List<Tuple<String, String>> attributes = new List<Tuple<String, String>>(); attributes.Add(New Tuple("att1", value1")); attributes.Add(New Tuple("att2", value2")); List attributes=newlist(); 添加(新元组(“att1”

我想将元组列表序列化为XML属性。例如:

List<Tuple<String, String>> attributes = new List<Tuple<String, String>>();
attributes.Add(New Tuple("att1", value1"));
attributes.Add(New Tuple("att2", value2"));
List attributes=newlist();
添加(新元组(“att1”,value1”);
Add(新元组(“att2”,value2”);
它应显示为:

<Root att1="value1" att2="value2">
</Root>

编辑: 我有一个这样的类,我正在使用XmlSerializer序列化它:

public class Root
{
     List<Tuple<String, String>> attributes = new List<Tuple<String, String>>();

     //other attributes and elements exist in this class
}
公共类根目录
{
列表属性=新列表();
//该类中还存在其他属性和元素
}
有没有简单的方法


谢谢

您的语法不正确,因为
New
在VB中是大写的,而不是C#

请阅读相关文档,并尝试完成示例

以下是一个例子:

var attributes = new List<Tuple<string, string>>();
attributes.Add(Tuple.Create("att1", "value1"));
attributes.Add(Tuple.Create("att2", "value2"));

var document = new XDocument();
var root = new XElement("Root");
document.Add(root);

foreach(var node in attributes.Select(x => new XAttribute(x.Item1, x.Item2)))
{
    root.Add(node);
}

Console.WriteLine(document); // <Root att1="value1" att2="value2" />

或者,您需要为动态属性实现
IXmlSerializable

您遇到了什么问题,尝试了什么?您应该使用定义类中的元素。问题是我不知道属性的名称和数量。所以它必须是数组/列表等中某种未定义的元素。问题是我不知道属性的名称和数量。因此,它必须是数组/列表等中某种未定义的元素。那么XDocument可能会提供最简单的用法。这需要序列化和反序列化吗?是的,它需要序列化和反序列化。看看是否适合您。
[XmlType("Root")]
public class Root
{
    [XmlAttribute("attr1")]
    public string Attribute1 { get; set; }
    [XmlAttribute("attr2")]
    public string Attribute2 { get; set; }
}