如何获取具有枚举类型名称和枚举选项名称的枚举值

时间:2017-06-26 20:48:25

标签: c# enums system.reflection

我有这个枚举:

public enum SomeEnum
{
   None,
   Half,
   All
}

如何使用以下方法体,所以我可以得到值1有选项"无"和enum name" SomeEnum"存储为字符串:

string enumTypeName = "SomeEnum";
string enumPickedOptionName = "None";

方法:

public int GetEnumValue(string enumTypeName, string enumPickedOptionName){}

2 个答案:

答案 0 :(得分:0)

使用枚举名称前的“命名空间”尝试此操作:

private int GetEnumValue(string enumTypeName, string enumPickedOptionName)
    {
        int result = -1;
        Type enumType;

        try
        {
            enumType= Type.GetType(enumTypeName);
            result = (int)Enum.Parse(enumType, enumPickedOptionName,true);
        }
        catch (Exception ex)
        {

        }
        finally
        {

        }

        return result;
    }

int value = GetEnumValue(“Namespace.SomeEnum”,enumPickedOptionName);

答案 1 :(得分:0)

我用这种方式解决了问题:

private int GetEnumValue(string assemblyName, string enumTypeName, string enumPickedOptionName)
{
    int result = -1;

    Assembly assembly = Assembly.Load(assemblyName);
    Type enumType = assembly.GetTypes().Where(x => x.Name == 
    enumTypeName).FirstOrDefault();

    result = (int)Enum.Parse(enumType, enumPickedOptionName, true);

    return result;
}