В настоящее время я работаю над изометрической игрой на основе плиток. В настоящее время у меня есть сетка с плитками, и эти объекты содержат данные об их положении, типе и различных объектах (например, деревьях), которые можно разместить поверх них.
Я создал абстрактный класс TileObject, и есть еще один класс с именем Tree, который наследуется от TileObject. Моя цель - создать статическую функцию, которая отвечает за создание этих объектов TileObject без использования конструктора.
Я тоже пробовал это с Generics (даже используя класс Activator), но, похоже, не сработало. Мои мысли были бы непатентованными, system.type, typeof, но я не могу собрать их все вместе.
public abstract class TileObject
{
protected TileObject() { }
public Tile Parent { get; set; }
public string ObjectType { get; set; }
public static TileObject CreateObject(string objName, Tile parent)
{
}
}
public class Tree : TileObject
{
}
На мой взгляд, это решение могло бы работать, но оно кажется жестко закодированным
public static TileObject CreateObject(string objName, Tile parent)
{
TileObject x;
if(objName == "Tree")
x = new Tree();
else if(objName == "Chair")
...
}