В настоящее время я пытаюсь заполнить словарь из данных, которые я получаю из строки json.Объявить производный класс в if/else без повторения полей базового класса
Мой текущий подход:
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);
}
К сожалению, это не компилируется, потому что я объявляю «пункт» в если/другое заявление.
Есть ли способ сделать это без определения полей базового класса для каждого типа элемента?
Я уже пробовал это, но я получаю следующее сообщение об ошибке: «Тип' Item.BaseItem „не содержит определение для' прочности“, а метод расширения' долговечности»типа' Item.BaseItem 'можно найти " – silentneedle
Затем вам нужно указать каждое конкретное использование дочерних свойств – davisoa
Не могли бы вы привести пример? :) – silentneedle