2 回答

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超4個(gè)贊
這就解決了。
public void triggerItem(Item item)
{
if (item is Weapon) {
equipWeapon((Weapon)item);
}
}
public void equipWeapon(Weapon weapon)
{
}
你在這里做什么是向下轉(zhuǎn)換的Item以Weapon同時(shí)傳遞到equipWeapon(Weapon weapon)。

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超10個(gè)贊
給你的基類一個(gè)方法,讓它被裝備,并在知道如何裝備自己的特定于類型的類中實(shí)現(xiàn)它。
例子:
abstract class Item
{
public abstract void Equip();
}
class Weapon
{
public override void Equip()
{
equipWeapon(this);
}
}
然后 triggerItem 變得微不足道:
public void triggerItem(Item item)
{
item.Equip();
}
如果你需要在不同的類(例如任何包含的類triggerItem)上調(diào)用裝備武器,你可以使類成為接口的一部分:
abstract class Item
{
public abstract void Equip(Game context);
}
class Weapon
{
public override void Equip(Game context)
{
context.equipWeapon(this);
}
}
class Game
{
public void triggerItem(Item item)
{
item.Equip(this);
}
}
- 2 回答
- 0 關(guān)注
- 182 瀏覽
添加回答
舉報(bào)