我目前正在开发基于等轴测图的游戏。目前,我有一个带有图块的网格,这些对象包含有关它们的位置,类型和各种对象(例如树)的数据,这些数据可以放在它们的顶部。
我创建了一个抽象的TileObject类,还有另一个名为Tree的类,它从TileObject继承。我的目标是拥有一个静态函数,该函数负责不使用构造函数而创建这些TileObjects。
我也尝试过使用泛型(甚至使用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")
...
}
一个解决方案可能是泛型!
这里是一个例子:
public static TileObject CreateObject<T>(Tile parent) where T : TileObject
{
TileObject x = new T();
}
看看where T : TileObject
这意味着您的类型T 将为TileObject
,因此您甚至不必照顾该类型。