所以可以说我有这个:
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,然后将其用作父类。
但是,有没有更有效的方法?
^考虑过要努力吗?我只需要一种更有效的方法即可完成此操作。
最佳答案
这不是父类。您的Stick
由Enchantments
组成。
简单的方法:传递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
的任何内容,例如Stick
或Staff
或Gun
等。关于c# - 如果父类是继承的类,如何获取父类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14844901/