所以我在 XNA、C# 4.0 中创建一个游戏,我需要管理很多 PowerUps(在代码中都是从类“PowerUp”继承的),并处理我目前拥有的 PowerUps 的后端管理枚举 PowerupEffectType,为 PowerUp 的每个子类都有一个值。最终,在代码中,我需要将 PowerupEffectType 转换为 Powerup 类型(属于 class Type
,通常使用 实现typeof([class name])
)。
由于这是一个小组项目,我想尽可能地将 PowerupEffectType 的每个值与其对应的类 Type 结合起来,即:不只是期望我的其他程序员使用 switch 语句手动进行转换,并确保以后添加/扩展在尽可能少的地方进行尽可能少的更改。我有几个选项,到目前为止我发现的最好的方法是创建枚举伪方法,将所有内容压缩为一个 switch 语句(我想要的 99%),这要归功于我在这里找到的一些提示:http ://msdn.microsoft.com/en-us/library/bb383974.aspx
但我正试图更进一步 -我可以保存 aType
吗enum
?我知道您可以将枚举保存为特定类型(链接:http: //msdn.microsoft.com/en-us/library/cc138362.aspx),但Type
不是其中之一。当前的选择是byte、sbyte、short、ushort、int、uint、long 和 ulong。是否有任何可行的方法可以将转换 a 保存为Type
上述任何数据类型并返回?
为了清楚起见,这是我希望我能做的,我正在寻找一种方法:
// (Assuming 'LightningPowerup', 'FirePowerup', and 'WaterPowerup' are
// all declared classes that inherit from a single base class)
public enum PowerupEffectType
{
LIGHTNING = typeof(LightningPowerup),
FIRE = typeof(FirePowerup),
WATER = typeof(WaterPowerup)
}
有什么办法可以做到这一点,还是我只是让一个已经完成 99% 的问题的解决方案过于复杂?
提前致谢!