我正在尝试将通用列表传递给将向列表添加新项目的函数。我有以下精简示例:
private void SetBayNumb<T>(ObservedList<T> bayList) where T : IBaySpec, new()
{
var bay = new T();
bayList.Add(bay);
}
调用它的方法有这个错误:
T' must have a public parameterless constructor in order to use it as parameter
泛型类型或方法中的类型T'
我正在尝试做的事情可能吗?我觉得它一定是因为编译器不应该关心它是什么类型的列表 - 它只需要调用公共的无参数构造函数并将新实例添加到传入的现有列表中。
我猜问题是接口不能保证它的实现者会有一个公共构造函数,但即使我给它一个具体的类,我也会得到这个错误:
类型
T' must be convertible to
BayClass' 以便在泛型类型或方法中将其用作参数“T”
将非常感谢任何指针。