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)作为参数,而不是表示枚举名称的字符串)。