我正在尝试创建一个简单的"库存"项目,就像在任何RPG中一样.我有非常基本的类,它们都有属性.
无论如何,我有一个基类,item并从中继承weapon.item具有属性(名称,值,重量,"重要项目")也在其中使用weapon,但weapon具有额外的属性(攻击,防御,速度,手性).
我有以下代码(抱歉,如果可读性太可怕了):
static void Main(string[] args)
{
List<item> inventory = new List<item>();
inventory.Add(new weapon("Souleater", 4000, 25.50f, false, 75, 30, 1.25f, 2));
//item---------------------------> weapon--------->
Console.Write("Name: {0}\nValue: {1}\nWeight: {2}\nDiscardable: {3}\nAttack: {4}\nDefense: {5}\nSpeed: {6}\nHandedness: {7}",
inventory[0].Name, inventory[0].BValue, inventory[0].Weight, inventory[0].Discard,
inventory[0].Atk, inventory[0].Def, inventory[0].Speed, inventory[0].Hands);
Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)
基本上,我要做的是weapon在库存中添加一个新的,但库存是一种List<item>类型.我一时兴起,希望由于它的继承,它会被接受.它是,但weapon无法访问特定属性:
('shopSystem.item'不包含'Atk'的定义,也没有扩展方法'Atk'接受'shopSystem.item'类型的第一个参数可以找到)
那么,有什么方法可以达到我的目的吗?有一个"库存",它可以存储item对象,以及weapon,armour,accessory等对象,它继承item?还值得一提的是,如果我声明以下内容,我可以访问所有需要的属性:
weapon Foo = new weapon("Sword", 200, …Run Code Online (Sandbox Code Playgroud)