В настоящее время я пытаюсь заполнить словарь из данных, которые я получаю из строки json.
Мой текущий подход:
public class Item {
public class BaseItem {
public int id;
public int level;
}
public class Armor : BaseItem {
public int durability;
}
public class Weapon : BaseItem {
public int damage;
}
}
foreach (JsonObject jsonObject in jsonArray) {
if (jsonObject["armor"] != null) {
var item = new Item.Armor();
item.durability = jsonObject["armor"]["durability"];
} else if (jsonObject["weapon"] != null) {
var item = new Item.Weapon();
item.damage = jsonObject["weapon"]["damage"];
} else {
var item = new Item.BaseItem();
}
item.itemID = jsonObject["id"];
item.level = jsonObject["level"];
Item.data.Add(item.itemID, item);
}
К сожалению, это не компилируется, потому что я объявляю "элемент" в инструкции if/else.
Есть ли способ сделать это без определения полей базового класса для каждого типа элемента?