所以可以说我有这个:

public class Item
{
    public int ItemID;
    public List<Enchantment> Enchantments; //Enchantment is a class
}

public class Stick: Item
{
    public int Damage = 18;
    public Stick()
    {
        ItemID = 4;
    }

    public void Update()
    {
        foreach (Enchantment ItemEnchantment in Enchantments)
        {
            Enchantment.Update();
        }
    }
}

public class Enchantment
{
    public int EnchantmentID;

    public void Update()
    {
        //NEED HELP HERE

        Parent.Damage += 2; //How do I know my parent is a (Stick)?
                        //I thought of giving each item a uniqueID, and two items cannot have the same id, so the enchantment checks the items list for a specific id, and then uses that as the parent class.
                        //But is there a more efficient way?

    }
}


我怎么知道我的父母是(棍子)?
我想到为每个项目赋予唯一的ID,并且两个项目不能具有相同的ID,因此结界会检查项目列表中的特定ID,然后将其用作父类。
但是,有没有更有效的方法?

^考虑过要努力吗?我只需要一种更有效的方法即可完成此操作。

最佳答案

这不是父类。您的StickEnchantments组成。

简单的方法:传递Stick以及方法:

// in Stick
foreach (Enchantment ItemEnchantment in Enchantments) {
    ItemEnchantment.Update(this);
}

// in Enchantment..
public void Update(Stick stick) {
    stick.Damage += 2;
}


为了使其更通用,请考虑使用另一个实现Damage修饰符的类:

public class ItemWithDamageModifier : Item {
    public int Damage { get; set; }
}


然后从此继承:

public class Stick: ItemWithDamageModifier {


然后您可以改用我的上述方法,如下所示:

public void Update(ItemWithDamageModifier damageItem) {
    damageItem.Damage += 2;
}


然后,您可以传递继承ItemWithDamageModifier的任何内容,例如StickStaffGun等。

关于c# - 如果父类是继承的类,如何获取父类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14844901/

10-13 06:57