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

C# 如何获取具有枚举类型名称和枚举选项名称的枚举值,c#,enums,system.reflection,C#,Enums,System.reflection,我有这个枚举: public enum SomeEnum { None, Half, All } 下面的方法体如何,以便我可以获得值1,并将选项“None”和枚举名称“SomeEnum”存储为字符串: string enumTypeName = "SomeEnum"; string enumPickedOptionName = "None"; 方法: public int GetEnumValue(string enumTypeName, string enumPicked

我有这个枚举:

public enum SomeEnum
{
   None,
   Half,
   All
}
下面的方法体如何,以便我可以获得值1,并将选项“None”和枚举名称“SomeEnum”存储为字符串:

string enumTypeName = "SomeEnum";
string enumPickedOptionName = "None";
方法:

public int GetEnumValue(string enumTypeName, string enumPickedOptionName){}
请在枚举名称之前使用“名称空间”进行尝试:

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)

我这样解决了这个问题:

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;
}

你试过什么?什么不起作用?我几乎肯定这是在周五被问到的…这不起作用,总是从Type.GetType(enumTypeName)得到null;但我解决了,请看我的答案。在调用函数时是否使用了枚举的命名空间?(例如,-GetEnumValue(“EnumNameSpace”。+enumTypeName,enumPickedOptionName)是的,我做了,可能这不起作用,因为枚举在主项目中引用的另一个项目中,我不知道。啊,是的……我认为它是您的项目的本地枚举。除了已经介绍的方法之外,还有其他一些方法可以做到这一点,但它要求您知道枚举类型或使用已知的类属性这是枚举类型。如果您对细节感兴趣,请告诉我(两者都使用typeof(object)作为参数,而不是表示枚举名称的字符串)。