0

我正在为某种命令使用的参数类编写代码。该命令有两个主要问题:

  • OptionalValues - 这是要选择的可选值。
  • SelectedValue - 用户选择。

用户输入是:从枚举中选择一个成员。

编码:

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属性链接到类型本身。这是不可能的。

泛型只是允许您创建某种类模板(c++ 人:不是那种模板),它为您提供的每种类型的 ENUM_TYPE 生成一个新类。仅此而已。

于 2013-10-08T10:15:45.650 回答