我正在創建一個具有Inventory對象的Character對象。在Inventory對象中,您獲得了InventoryItem對象的列表,並且在每個InventoryItem對象中都有一個Item對象。哪種方法可以製作這個對象類
字< =庫存< =多inventoryItem < =項目
我的問題是與項目。一個項目可以是多種類型。每種類型都有自己的屬性。所以在我的數據庫中我得到了thoses表:Item,WeaponItem,ArmorItem,UseableItem,TrashItem,QuestItem和AccesoryItem。每個項目類型表都有一個ItemId將它們鏈接到Item。
我的問題是:如何實現我的項目類的不同類型的項目?
我想到了正在爲每種類型的字段/屬性,並將它們全部設置爲空,除了當前類型的項目是什麼。 (也可能加入一個表的ItemType並將其添加到類字段/屬性)
我想到了正在爲每種類型的類,做上述相同,但與對象本身另一件事。
這是做這件事的好方法還是更好?
這裏是我當前的項目類代碼:
public class Item
{
#region Fields
//=======================================================================================
private int itemId;
private string itemName;
private int itemLevel;
private int itemRarityId;
private int equipementSlotId;
private int statsId;
private Stats stats;
private string imageUrl;
private int equipementSlotSecondId;
private int itemWeight;
//=======================================================================================
#endregion
#region Properties
//=======================================================================================
public int ItemId
{
get
{
return itemId;
}
set
{
itemId = value;
}
}
public string ItemName
{
get
{
return itemName;
}
set
{
itemName = value;
}
}
public int ItemLevel
{
get
{
return itemLevel;
}
set
{
itemLevel = value;
}
}
public int ItemRarityId
{
get
{
return itemRarityId;
}
set
{
itemRarityId = value;
}
}
public int EquipementSlotId
{
get
{
return equipementSlotId;
}
set
{
equipementSlotId = value;
}
}
public int StatsId
{
get
{
return statsId;
}
set
{
statsId = value;
}
}
public Stats Stats
{
get
{
return stats;
}
set
{
stats = value;
}
}
public string ImageUrl
{
get
{
return imageUrl;
}
set
{
imageUrl = value;
}
}
public int EquipementSlotSecondId
{
get
{
return equipementSlotSecondId;
}
set
{
equipementSlotSecondId = value;
}
}
public int ItemWeight
{
get
{
return itemWeight;
}
set
{
itemWeight = value;
}
}
#endregion
#region Methods
//=======================================================================================
#endregion
#region Constructors
//=======================================================================================
public Item()
{
}
public Item(int pItemId)
{
ItemId = pItemId;
}
//=======================================================================================
#endregion
,如果需要,我可以添加任何額外的信息。
編輯:繼承。我很遺憾忘記了這一點。
因此,我爲繼承我的物品類的每種類型做類。然後我的問題改變現在這樣:
當我創建我的性格庫存與它的inventoryItem項目的清單。要告訴哪個項目類型使用,我必須在我的數據庫中創建一個itemType屬性到我的項目或一個ItemType表與每個itemType然後鏈接它與一個id然後使用這個itemType/itemTypeId告訴哪個類使用? (使用開關盒)還是我弄錯了?
很抱歉,如果問題是愚蠢的,我有點慢。 :(
你需要學習繼承。 – emd
只是一個提示,如果你不知道:你可以聲明像這樣的屬性'公衆int ItemId {獲取;組; }'。通過創建一個私有字段並在'get'和'set'運算符中訪問它,它就像你的屬性一樣起作用。這爲您節省了大量的輸入。 – Wutz
爲什麼你有這麼多的物品表?他們有不同的屬性嗎?你不會在你的代碼片段中顯示它們。你能分享表格的細節嗎? – Tombala