我有两个抽象类:
abstract class Item
{
public string name { get; set; };
public abstract Genre Genre { get; set; };
}
abstract class Genre
{
public string name { get; set; };
}
还有他们的孩子
class weapon : Item
{
public virtual GenreWeapon Genre { get; set; };
}
class armor: Item
{
public virtual GenreArmor Genre { get; set; };
}
class GenreWeapon : Genre
{
public int Damage { get; set; };
}
class GenreArmor : Genre
{
public int DamageReduction { get; set; };
}
但我不知道该怎么做,我试试
public new virtual GenreWeapon Genre { get; set; };
但如果我有 Item.Genre 我会得到 NULL
我尝试覆盖,但 VS 说这是不可能的,因为它不是同一个类
我尝试了很多事情但不知道该怎么做
请帮助我,我疯了。
谢谢
一个小例子
商店包含很多商品,商品的价格取决于类型和质量
所以在商店里我有类似的东西
List<Item> listItem = new List<Item>();
foreach(Item i in listItem)
{
int prix = i.Genre.Prix;
String Quality = i.Quality;
if(i is Weapon arme)
{
int dégats = arme.Genre.Dégats;
}
if(i is armor armor)
{
int resist = armor.Genre.Armor;
}
}
这是一个简单的例子,也许不好^^我想在任何地方都没有演员得到武器的伤害所有物品的价格
并创造一种武器,我必须做
GenreWeapon sword = (get the GenreWeapon i need);
Weapon w = new Weapon{Genre = sword, name = "old sword of your granny" , quality = "bad"};
但我现在不知道如何处理 Item 和 int Weapon 中的 Genre 而不在代码中到处转换