そのため、XNA、C#4.0でゲームを作成しており、多くのPowerUp(コードではすべて「PowerUp」クラスから継承されます)を管理し、現在使用しているPowerUpのバックエンド管理を処理する必要があります。列挙型、PowerupEffectType、PowerUpの各子クラスの値。最終的に、コードでPowerupEffectTypeからPowerupタイプ(クラスのType
、通常はで達成されるtypeof([class name])
)への変換を行う必要があります。
これはグループプロジェクトであるため、PowerupEffectTypeの各値を対応するクラスTypeと可能な限り結合したいと思います。つまり、他のプログラマーがswitchステートメントを使用して手動で変換を行い、後で追加/拡張を確認することを期待するだけではありません。可能な限り少ない場所での変更を最小限に抑えます。これにはいくつかのオプションがありますが、これまでに見つけた最良の方法は、ここで見つけたいくつかのヒントのおかげで、すべてを1つのswitchステートメント(必要なものの99%)に凝縮する列挙型疑似メソッドを作成することです:http ://msdn.microsoft.com/en-us/library/bb383974.aspx
しかし、私はそれをさらに一歩進めようとしています-私はそれをに保存できますか?Type
enum
列挙型を特定の種類として保存できることは知っていますが(リンク:http://msdn.microsoft.com/en-us/library/cc138362.aspx)、Type
その1つではありません。現在の選択肢は、byte、sbyte、short、ushort、int、uint、long、およびulongです。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%完了している問題の解決策を複雑にしすぎていますか?
前もって感謝します!