2013-10-08 74 views
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”。 (智能感知很重要)。

我不确定是否有可能... 您认为如何?

+1

这是不是非常通用的,如果类型是已知的整个时间..为什么打扰与泛型在这一切。 –

+0

你不能这样做,myParam.OptionalValues是一个值而不是枚举类型。你必须使用myParam.Value = eUserChoice.Choice1; –

+1

无论如何,当您输入myParam.Value = –

回答

0

泛型不是(那)魔法。用下面的行

public ENUM_TYPE OptionalValues {get;} 

您正在创建一个可以有型ENUM_TYPE的的属性。但是,你想要的是让OptionalValues属性链接到类型本身。这是不可能的。泛型只是允许你创建某种类模板(C++人:不是类型的模板),它为你提供的每种类型的ENUM_TYPE生成一个新的类。没有别的了。