我想創建一個簡單的「物品清單」,就像在任何RPG中一樣。我有非常基本的類,它有屬性。C#列表<baseClass> - 任何方式來存儲繼承類,也?
無論如何,我有一個基類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();
}
基本上,我想要做的就是添加一個新的weapon
去庫存,但庫存是List<item>
類型。我出於一時的希望,因爲它的繼承,它會被接受。它是,但weapon
特定的屬性無法訪問:
('shopSystem.item'不包含'Atk'的定義,也沒有擴展方法'Atk'接受類型的第一個參數「shopSystem.item」可以找到)
那麼,有沒有什麼辦法可以實現我正打算在這裏?有一個「庫存」,它可以存儲item
對象,以及weapon
,armour
,accessory
等對象,從item
繼承?還值得一提的是,如果我聲明以下內容,我可以訪問所有期望的屬性:
weapon Foo = new weapon("Sword", 200, 20.00f, false, 30, 20, 1.10f, 1);
非常感謝您的閱讀。
這裏的item
和weapon
類,如果有人有興趣:
如果我使用'(武器)庫存[0] .Atk',我仍然會得到相同的錯誤信息。 – Deadrust 2012-07-15 22:58:44
嘗試使用((武器)庫存[0])。而不是 – 2012-07-15 22:59:18
是啊,那個工程!謝謝! – Deadrust 2012-07-15 23:00:30