我正在创建一个具有 Inventory 对象的 Character 对象。在 Inventory 对象中,您有一个 InventoryItem 对象列表,在每个 InventoryItem 对象中,您都有一个 Item 对象。
字符 <= 库存 <= 多个库存项目 <= 项目
我的问题是项目。一个项目可以是多种类型。每种类型都有自己的属性。所以在我的数据库中,我得到了这些表:Item、WeaponItem、ArmorItem、UseableItem、TrashItem、QuestItem 和 AccesoryItem。每个项目类型表都有一个 ItemId 以将它们链接到项目。
我的问题是:如何为我的 Item 类实现不同类型的项目?
我想到的是为每种类型创建一个字段/属性,并将它们全部设置为 null,除了项目的当前类型。(也可能添加一个表 ItemType 并将其添加到类 Field/Property)
我想到的另一件事是为每种类型创建一个类,并与上述相同,但使用对象本身。
那会是做这件事的好方法还是有更好的方法?
这是我当前的项目类代码:
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 来告诉使用哪个类?(使用开关盒)还是我弄错了?
对不起,如果问题很愚蠢,我有点慢。:(