枚举

2017-06-14 177 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

我在做梦。我不认为我在编辑中描述的是可行的。