嗨,我有一個抽象類Item。食物,武器等類繼承這個類。有關這些項目的所有信息都存儲在數據庫中,C#代碼的工作與確切的類匹配,並通過Enum進行匹配,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);
}
在食品的構造函數的參數食品的方法,武器等類是從數據庫中的對象,讓瞭解它的領域對象。
是否有些東西可以幫助我在沒有此代碼的情況下匹配這些類型?當我看着它時真的讓我很煩惱。
嘗試看看,可能會有幫助 http://stackoverflow.com/questions/43278791/polymorphic-object-creation-without-if-condition/43279301# 43279301。主要想法是通過結構創建對象,然後調用項目的polimorfic方法 – gabba