0

ある種のコマンドで使用されるパラメーター クラスのコードを書いています。このコマンドには 2 つの主な問題があります。

  • OptionalValues - これは、選択するオプションの値です。
  • SelectedValue - ユーザーの選択。

ユーザー入力は次のとおりです。列挙型から 1 つのメンバーを選択します。

コード:

public enum eUserChoice
{
    Choice1,
    Choice2,
    Choice3
};

public class Parameter<ENUM_TYPE>
{
    public ENUM_TYPE OptionalValues {get;} // WRONG USING
    public ENUM_TYPE Value {get; set;}
}

コードの要求された動作:

Parameter<eUserChoice> myParam = new Parameter<eUserChoice>()
myParam.Value = myParam.OptionalValues.Choice1;
// OR:
// myParam.Value = myParam.OptionalValues.Choice1 | myParam.OptionalValues.Choice2;

「myParam.OptionalValues.」を書いているとき。これを「eUserChoice」と書いてほしいです。(インテリセンスは重要です)。

それが可能かどうかはわかりません.どう思いますか?

4

1 に答える 1

0

ジェネリックは魔法ではありません。次の行で

public ENUM_TYPE OptionalValues {get;}

タイプ ENUM_TYPEのを持つことができるプロパティを作成しています。ただし、必要なのは、OptionalValuesプロパティを型自体にリンクさせることです。不可能だよ。

ジェネリックを使用すると、提供する ENUM_TYPE の各タイプに対して新しいクラスを生成する、ある種のクラス テンプレート (c++ の人々:そのようなテンプレートではない) を作成できます。そして、それ以上はありません。

于 2013-10-08T10:15:45.650 に答える