枚举
问题描述:
的通用转换方法这里就是我想要做的枚举
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什么是一个实际获得,宣布枚举,并且将适用于任何类型的通过。编译时间转换是不可能的。
编辑:我想创建一个功能“转换”,将接受两个字符串 - 一个字符串,指定枚举类型和枚举值的字符串。它不会特定于任何给定的枚举类型。该函数会将枚举值返回给该类型的变量。
这是可行的还是我在做梦?
答
如果您可以提供枚举的完全合格的命名空间,你可以使用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);
}
}
答
我在做梦。我不认为我在编辑中描述的是可行的。
怎么样'Enum.Parse'?可能与'GetType'的,如果你真的想要一个是一个字符串 – BradleyDotNET
要添加到@BradleyDotNET的注释类型参数,在这里它是[直接从文档(https://msdn.microsoft.com/en -us /库/ essfb559(v = vs.110)的.aspx) – maccettura
我Parse方法的理解是,类型信息在编译时处理,与原型在文档不显示此ARG作为字符串类型。我有这个权利吗? –