我需要帮助,因为我遇到了遇到的问题。我有一个列表,List<Items> ItemList
我希望将一些 ContainerItems 放入该列表中,但是当我这样做时,所有的 ContainerItems 属性消失了,它变成了 Items
class Items
{
public Items()
{
}
public string Name { get; set; }
public int durability { get; set; }
}
class ContainerItems : Item
{
public ContainersItem()
{
}
public int maxItems { get; set; }
public List<Items> ContainItems { get; set;}
}
理想情况下,我希望将我制作的所有项目存储到Dictionary<string,Items>
中。是否仍然存储所有项和 ContainerItems 并保留其属性?提前谢谢!
答案 0 :(得分:2)
假设您有项目列表:
public List<Items> ContainItems { get; set }
现在你想循环遍历它们,但是安全,因为并非所有列表成员都是ContainerItems
对象:
foreach(var item in ContainItems)
{
if(item is ContainerItems)
{
var containerItems = (ContainerItems)item;
}
else
{
//Otherwise deal with it as an Items object
}
}
答案 1 :(得分:1)
每次要使用特定于此类的字段或函数时,您将(1)将列表定义为List<ContainersItem>
或(2)在ContainersItem
中投射列表内容