player私のゲームの私のクラスでこのメソッドを見てください:
public void eatSomethingt(Items eatable)
{
    foreach (Items i in items)
    {
        if (i is Ieatable && i.name == eatable.name) //Give items an ID in the future
        {
            Ieatable k = i as Ieatable;
            k.eat(this);
            items.Remove(i);
            break;
        }
    }
}
基本的に、これはプレイヤーが持っているアイテムのリストを調べてそれらを比較し、渡されたパラメータが食べることができるかどうかを確認します。そうであれば、プレイヤーが持っているかどうかを確認します。IF ステートメントに入ると、アイテムはプレーヤーのバックパックから削除されます( items)
問題は次の行にあります: k.eat(this)It is sent to this method:
public void eat(Player p)
{
    Console.WriteLine(p.Name + " Ate the " + name);
    p.life = p.life + amountHealed;
}
Fruitこれは、アイテムをプレイヤーに供給するクラスであるため、少し「ピンポン」のように感じます。私のFruitクラスはインターフェイスを実装するためiEatable  (これは確かに理にかなっています) eat、それを実装するクラスにメソッドを配置する必要があります。