具有继承类的项目字典

时间:2019-01-05 09:40:43

标签: c# unity3d

我对编码还很陌生,因此这可能不是“最佳”的处理方式,但从本质上讲,我有这样的东西:

public class Item
{
    public int itemID;
    public string itemName;
}

public class Tool : Item
{
    public int toolDurability;
}

我想创建一个字典,类似

public Dictionary<int,Item> itemDic = new Dictionary<int,Item>();

其中键是itemID,而ItemItem。这样,我就有了一个数据库来为其提供一些itemID,并且它吐出了适当的项目。问题是,如果我将类Tool添加到该字典中,如果我尝试访问字典值,它将无法访问Tool变量(因为字典仅指定了顶级“项目”类)。

如果我创建了几个不同的继承类,我将如何设置字典以使我能够基于其itemID从字典中获取正确的类/项目类型。谢谢你。

1 个答案:

答案 0 :(得分:2)

您可以执行以下操作。

输入

Dictionary<int,Item> itemDict = new Dictionary<int,Item>
{
  [1] = new Item(){itemID = 2},
  [2] = new Tool(){itemID=3, toolDurability=4}
};

您可以

foreach(KeyValuePair<int, Item> entry in itemDict)
{

  switch(entry.Value)
  {
    case Tool tool:
      Console.WriteLine(tool.toolDurability);
      break;
    case Item item:
      Console.WriteLine(item.itemID);
      break;
   }
 }