繁体   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