C# 泛型类的xml序列化

C# 泛型类的xml序列化,c#,.net,xml,list,xml-serialization,C#,.net,Xml,List,Xml Serialization,我需要将包含类型为Pair的对象的列表序列化为xml 首先,我创建了一个类PairList来保存成对的列表,然后我创建了实际的类,它表示一对两个值,key和value [XmlRoot("pairList")] public class PairList<T,U> { [XmlElement("list")] public List<Pair<T,U>> list; public PairList() { l

我需要将包含类型为
Pair
的对象的列表序列化为xml

首先,我创建了一个类
PairList
来保存成对的列表,然后我创建了实际的类,它表示一对两个值,
key
value

[XmlRoot("pairList")]
public class PairList<T,U> 
{
    [XmlElement("list")]
    public List<Pair<T,U>> list;

    public PairList()
    {
        list = new List<Pair<T, U>>();
    }
}

public class Pair<T, U>
{
    [XmlAttribute("key")]
    public T key;

    [XmlAttribute("value")]
    public U value;

    public Pair(T t, U u)
    {
        key = t;
        value = u;
    }
}
[XmlRoot(“pairList”)]
公共类成对列表
{
[XmlElement(“列表”)]
公开名单;
公共成对列表()
{
列表=新列表();
}
}
公共类对
{
[XmlAttribute(“键”)]
公钥;
[XmlAttribute(“值”)]
公共价值观;
公共对(T,U)
{
key=t;
数值=u;
}
}
然后,我尝试序列化它:

PairList<string,int> myList = new PairList<string,int>();
myList.list.Add(new Pair<string, int>("c", 2));
myList.list.Add(new Pair<string, int>("c", 2));
myList.list.Add(new Pair<string, int>("c", 2));
myList.list.Add(new Pair<string, int>("c", 2));
try
{
    XmlSerializer serializer = new XmlSerializer(typeof(PairList<string, int>));
    TextWriter tw = new StreamWriter("list.xml");
    serializer.Serialize(tw, myList);
    tw.Close();
}
catch (Exception xe)
{
    MessageBox.Show(xe.Message);
}
PairList myList=new PairList();
添加(新的一对(“c”,2));
添加(新的一对(“c”,2));
添加(新的一对(“c”,2));
添加(新的一对(“c”,2));
尝试
{
XmlSerializer serializer=新的XmlSerializer(typeof(PairList));
TextWriter tw=newstreamwriter(“list.xml”);
serializer.Serialize(tw,myList);
tw.Close();
}
捕获(异常xe)
{
MessageBox.Show(xe.Message);
}

不幸的是,我遇到了一个异常:
反映类型时出错:PairList[System.String,System.Int32]
。欢迎提出任何关于如何避免此异常并序列化列表的想法。

只需将无参数构造函数添加到您的
类中,就可以了

public Pair()
{
}
谢谢:)。你能告诉我为什么那个构造器会导致这个问题吗?@Theo。