枚舉

2017-06-14 159 views
0

的通用轉換方法這裏就是我想要做的枚舉

string MyEnumType = "SpaghettiDiameter"; 
string MyEnumValue = "NEEDS_ALL_SAUCE"; 


//this is not exact syntax - only to represent the logic 
//MyEnumValue is converted from string to the type contained in MyEnumType 
var Dinner = Convert(MyEnumValue, MyEnumType); 

轉換功能需要知道如何從MyEnumType什麼是一個實際獲得,宣佈枚舉,並且將適用於任何類型的通過。編譯時間轉換是不可能的。

編輯:我想創建一個功能「轉換」,將接受兩個字符串 - 一個字符串,指定枚舉類型和枚舉值的字符串。它不會特定於任何給定的枚舉類型。該函數會將枚舉值返回給該類型的變量。

這是可行的還是我在做夢?

+3

怎麼樣'Enum.Parse'?可能與'GetType'的,如果你真的想要一個是一個字符串 – BradleyDotNET

+0

要添加到@BradleyDotNET的註釋類型參數,在這裏它是[直接從文檔(https://msdn.microsoft.com/en -us /庫/ essfb559(v = vs.110)的.aspx) – maccettura

+0

我Parse方法的理解是,類型信息在編譯時處理,與原型在文檔不顯示此ARG作爲字符串類型。我有這個權利嗎? –

回答

0

如果您可以提供枚舉的完全合格的命名空間,你可以使用Enum.Parse提到。

public enum SpaghettiDiameter 
{ 
    Value1, 
    NEEDS_ALL_SAUCE 
} 
class Program 
{ 
    static void Main(string[] args) 
    { 
     string MyEnumType = "TestAppCore.SpaghettiDiameter"; 
     string MyEnumValue = "NEEDS_ALL_SAUCE"; 
     SpaghettiDiameter result = (SpaghettiDiameter)Enum.Parse(Type.GetType(MyEnumType), MyEnumValue); 
    } 
} 
0

我在做夢。我不認爲我在編輯中描述的是可行的。