В настоящее время я делаю игру в XNA, и я пытаюсь найти способ создания класса с помощью строки. Я хочу, чтобы это что-то вроде этого работы:Создайте новый экземпляр класса, используя строку
string classtype = "DrillTool"; //classtype/classname
InvItem item = new .... ("DrillTool"); //this is where i'm lost!
Класс DrillTool выглядит следующим образом:
class DrillTool : InvItem
//The constructor is something like this
public DrillTool(string itemName, string spriteName, string storedBatteryPower etc.)
Так что мой вопрос: Как создать новый экземпляр класса, используя строка? И как я могу передать в параметрах или «значений конструктора» для вновь созданного класса
Detailes Ниже здесь:
Класс MyClass наследует от (InventoryItem) класса InvItem, так что я могу держать разные классы в том же списке, поскольку все они должны быть элементами. Элементы разделены на разные классы, потому что я хочу, чтобы они имели разные способности/значения и команды.
Другой вопрос: Как мне создать класс как свой собственный тип/класс без каких-либо утверждений?
Как это:
InvItem drillItem = new DrillTool(etc.);
(Typeof(drillItem))drillItem.valueThatOnlyExistsInDrillToolClass; //?
//I can't access the DrillTool values of drillItem if it has not been "converted".
И не так:
if (drillItem.GetType() == typeof(DrillTool))
{
currentItem = (DrillTool)drillItem;
currentItem.valueThatOnlyExistsInDrillToolClass;
}
else if (etc.) //I am gonna end up with over 20 classes at least.
Если я где-то неясно, или если вам нужна дополнительная информация, то просто сказать, что нужно.
Любая помощь приветствуется. Заранее спасибо.
Сторона заметок; downcasting - кодовый запах. Вы должны попытаться определить, зачем вам это нужно; и избавиться от необходимости литья. – BradleyDotNET
Почему бы не сделать класс, являющийся общим классом элементов. Затем вы сохраняете всю информацию в классе и сохраняете имя элемента и тип элементов, поэтому вам не нужно создавать классы, подобные этому? – deathismyfriend
Добавить комментарий @deathismyfriend. Ваши объекты должны быть настроены так, чтобы полиморфизм заботился обо всех «конкретных» деталях. Вы никогда не должны заботиться о конкретном типе. – BradleyDotNET