2

我正在尝试将一组列表存储在列表中,但是因为强制程序员在 <> 列表将包含什么数据类型以及列表包含的列表我似乎无法将我的列表添加到我的主人包含列表的列表没有收到错误消息,告诉我我没有添加正确类型的列表。

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>>的父类:- 无济于事,我得到了同样的错误。MyObject1MyObject2List<List<MyObjectMaster>>

非常感谢任何帮助。

4

2 回答 2

3

myMasterList 的类型为 a List<List<object>>,它只接受List<object>类型元素。虽然 MyObject1 派生自对象,List<MyObject1>但不等同于List<object>.

为了解决这个问题,您可以使用 myMasterList 作为 a并在每次访问它们时List<object>将对象强制转换为,或者在插入它们之前使用这样的 Linq 查询将您的单个列表强制转换为。List<object>List<object>

myMasterList.Add(List1.Select(item => item as Object).ToList());
于 2013-07-13T23:17:30.233 回答
1

List1是类型List<MyObject1>,但您按原样使用它List<object>。这些可能看起来相似但并不相同且不可兑换。

您的解决方案是列出和的通用基本类型或MyObject1接口MyObject2。如果不出意外,您可以在任何地方使用List<object>

你说你试过了MyObjectMaster,但你没有显示代码......问题可能是那个List<MyObjectMaster>并且List<MyObject1>也不能转换......也就是说,你应该在任何地方使用完全相同类型的列表。

于 2013-07-13T23:09:25.293 回答