如何解决没有从'List <QSO>'到'List <List <QSO >>'的隐式引用转换
我正在尝试创建一个仅接受List<T>
public class MyTables<T> where T : List<T>
{
public MyTables(T list)
{
}
}
尝试实例化它时,编译器抱怨
var mt = new MyTables<List<QSO>>(Log.QSOs);
// Log.QSOs is an object property defined as
// public List<QSO> QSOs { get; set; }
这是错误:
Error CS0311 The type 'List<QSO>' cannot be used as type parameter 'T'
in the generic type or method 'MyTables<T>'.
There is no implicit reference conversion from
'List<QSO>' to 'List<List<QSO>>'
为什么要期待'List<List<QSO>>
'而不是'List<QSO>
'?
解决方法
通用参数为T
,您已将其约束为List<T>
。无论您提供什么作为通用参数,都必须是其自身的列表,这大概不是您想要的!
这是一种可以满足您当前约束的类型:
class MyTable : List<MyTable>
{ }
您可能想改成这样的类:
public class MyTables<T>
{
public MyTables(List<T> list)
{
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。