我正在尝试在列表中存储一组列表但是因为强制程序员在<>列表将包含什么数据类型以及列表包含的列表我似乎无法将我的列表添加到包含列表的主列表中,而不会出现错误,告诉我我没有添加正确类型的列表。
public List<MyObject1> List1{ get; set; }
public List<MyObject2> List2{ get; set; }
List<List<object>> myMasterList; //nested type definitions here
public SetUpLists()
{
List1= new List<MyObject1>();
List2= new List<MyObject2>();
myMasterList= new List<List<object>>(); //nested type definitions here
//ERROR ON NEXT 2 LINES
'System.Collections.Generic.List<System.Collections.Generic.List<object>>.Add(System.Collections.Generic.List<object>)' has some invalid arguments.
myMasterList.Add(List1);
upgradeList.Add(List2);
}
所以从查看错误报告看起来应该可以正常工作。我甚至尝试过它List<List<object>>
而不是MyObject1
和MyObject2
类上的父类:List<List<MyObjectMaster>>
- 无济于事我得到同样的错误。< / p>
非常感谢任何帮助。
答案 0 :(得分:3)
myMasterList的输入为List<List<object>>
,只接受List<object>
类型元素。虽然MyObject1派生自对象,但List<MyObject1>
不等同于List<object>
。
要解决此问题,您可以将myMasterList用作List<object>
,并在每次访问时将对象强制转换为List<object>
,或者使用这样的Linq查询将您的个人列表转换为{插入之前{1}}。
List<object>
答案 1 :(得分:1)
List1
属于List<MyObject1>
类型,但您使用的是List<object>
。这些可能看起来相似但不相同且不可转换。
此处的解决方案是列出MyObject1
和MyObject2
的公共基本类型或界面。如果不出意外,您可以随处使用List<object>
。
您说您尝试使用MyObjectMaster
,但未显示代码......问题可能是List<MyObjectMaster>
和List<MyObject1>
也无法转换...是的,你应该在任何地方使用完全相同类型的列表。