1

多くのゲーム画面を表示できるシナリオに行き詰まっており、ラジオ ボタンまたはコンボ ボックスを使用してゲーム画面を選択できるようにしたいと考えています。しかし、問題はそれを実装するための最良の方法ですか?

チェックボックスまたはコンボボックスの選択の文字列をファクトリに渡す必要がありますか、それとも Enum を使用する必要がありますか? Enum を使用する方法がある場合、どのように使用すればよいですか? 簡単な例はいいですねありがとう。

4

1 に答える 1

2

このシナリオでは、タイプミスによって引き起こされる問題を防ぎ、オプションをインテリセンスで利用できるようにするため、魔法の文字列の代わりに列挙型を使用するのが好きです。

namespace TheGame 
{
    // declare enum with all available themes
    public enum EnumGameTheme { theme1, theme2 };

    // factory class
    public class ThemeFactory 
    {
        // factory method.  should create a theme object with the type of the enum value themeToCreate
        public static GameTheme GetTheme(EnumGameTheme themeToCreate) 
        {
            throw new NotImplementedException();
            // TODO return theme
        }
    }

    // TODO game theme class
    public class GameTheme { }
}

(たとえば) lstThemesで選択されたテーマを指定してファクトリを呼び出すコード:

// get the enum type from a string (selected item in the combo box)
TheGame.EnumGameTheme selectedTheme = Enum.Parse(typeof(TheGame.EnumGameTheme), (string)lstThemes.SelectedValue);
// invoke the factory method
TheGame.GameTheme newTheme = TheGame.ThemeFactory.GetTheme(selectedTheme);

利用可能なテーマを文字列として取得するためのコード:

// get a string array of all the game themes in the Enum (use this to populate the drop-down list)
string[] themeNames = Enum.GetNames(typeof(TheGame.EnumGameTheme));
于 2012-05-28T19:41:31.413 に答える