2013-10-08 99 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生成一個新的類。沒有別的了。