【发布时间】:2017-04-20 16:46:35
【问题描述】:
您好,我有一个抽象类 Item。 Food、Weapon 等类由此类继承。有关此项目的所有信息都存储在数据库中,C# 代码的工作是匹配确切的类并通过 Enum 进行匹配,Enum 也以整数形式存储在数据库列中。我的问题是这个愚蠢的代码,无论我必须使用食物、武器等类的方法
if ((ItemType)userItem.ItemType == ItemType.Food)
{
Food food = new Food(userItem);
food.UseItem(sender);
}
else if ((ItemType)userItem.ItemType == ItemType.Weapon)
{
Weapon weapon = new Weapon(userItem);
weapon.UseItem(sender);
}
在Food、Weapon等类的构造函数的参数中是来自数据库的对象,让对象知道它的字段。
是否有某种东西可以帮助我在没有此代码的情况下匹配这些类型?当我看着它时,它真的让我很烦。
【问题讨论】:
-
试试看,可能会有帮助stackoverflow.com/questions/43278791/…。主要思想是通过fabric创建对象,然后调用item的polimorfic方法