我已经约束了泛型方法和指定类型的通用列表。是否有可能将此约束项添加到列表中?
class Test
{
private static Test _instance;
private List<QueueItem<IData>> queue;
public static void Enqueue<T>(QueueItem<T> i) where T : IData, new()
{
_instance.queue.Add(i); //Fails on compilation
}
//...some other code...
}
其他课程是:
public class IData
{
public IData() { }
}
class QueueItem<T> where T : IData, new()
{
public SomeUnchangableClass<T> Data {get; set;}
public string Description { get; set; }
}
我必须保持约束 IData,new(),因为其余的代码。但我不知道为什么我无法将此项添加到通用列表中,因为约束属于同一个类。
答案 0 :(得分:0)
如果你添加:
,它会编译class QueueDataItem : QueueItem<IData> {}
并将Test
更改为
class Test
{
private static Test _instance;
private List<QueueDataItem> queue;
public static void Enqueue(QueueDataItem i)
{
_instance.queue.Add(i); //Fails on compilation
}
//...some other code...
}