0

我有一个定义为的类

public class SerializableList<TList, TValue> : IXmlSerializable where TList : IList<TValue>

当尝试实现构造函数以确保我有一个 TList 对象时,问题就出现了。

public SerializableList()
{
    FList = new TList();
}

这会引发没有 new() 约束的预期错误。因为我希望能够使用

var myList = new SerializableList<SortedList<string>, string>();

这是否意味着我以错误的方式看待事物,或者有没有办法可以定义新的 FList 对象?

4

2 回答 2

2
public class SerializableList<TList, TValue> : IXmlSerializable
    where TList : IList<TValue>, new()
于 2012-08-30T07:21:57.863 回答
1

你想要的是通用类型约束

在您的实例中,类声明需要是

public class SerializableList<TList, TValue> 
    : IXmlSerializable where TList : IList<TValue>, new()

Wherenew()强制TList必须有一个无参数的构造函数

于 2012-08-30T07:24:47.143 回答