簡體   English   中英

我如何制作某個類的列表,但仍允許使用其所有參數C#在列表中允許該類的擴展

[英]How can I make a list of a certain class, but still allow extensions of the class to be allowed in the list with all of their parameters C#

因此,我正在編寫一個用於統一C#的項目系統,並且具有針對不同類型的項目擴展的該基礎項目類,例如,我將擴展該基礎類並添加一個用於攻擊和攻擊速度的變量,以及一個用於進攻武器類。

但是我的問題是我正在為物品編寫數據庫,我想將這些不同的類存儲到一個大列表中,但是當我列出基本物品列表並傳遞武器物品時,它會切斷攻擊功能,攻擊變量,並且基本上將武器項目變成了基礎項目,使其無用。

如果您喜歡RDBMS,而不是像SledgeHammer建議的那樣使用NOSQL,那么您可能會在這里找到答案。

在關系數據庫中,有兩種主要的實現方法,這就是最常見的數據庫系統。

  1. 對於每種類型的項,您可以有不同的表,因此, Weapon有一個表, Potion有另一個表, Item表是(Name, Type, Id)元組的列表,告訴您要在哪個表中查看哪個項以獲得其確切的細節。 每個類別的項目需要一個表,但是如果您小心一點,則只需要幾個表。

  2. 有一個Item表,該表再次存儲Item Type。 您還有一個“屬性”表,該表具有列ItemId, Attribute, Value因此,如果您的劍速度為5,傷害為10,並且葯水可以恢復3,則您將獲得以下行

     Item ==== Id | Name | Category 1 | "Sword" | "weapon" 2 | "Healing Potion" | "potion" Attribute ========= ItemId | Attribute | Value 1 | "speed" | 5 1 | "damage" | 10 2 | "healing" | 3 

然后由您決定是否要join ItemId,然后將行pivot到列中並轉換為項目的類。

或者您可以使用基於文檔的數據庫,如其他答案所建議的那樣。

聽起來好像您想使用文檔存儲而不是RDBS。 RDBS要求表中的所有項目均為同一類型。 缺點是您最終得到一堆NULL列,這些類型的NULL並不包含所有使所有事情變得曲折的列。 文檔存儲區沒有架構,因此您僅具有與類型相關的屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM