gpt4 book ai didi

c# - 当枚举类型也像字符串一样命名时,来自字符串的 ParseEnum

转载 作者:太空宇宙 更新时间:2023-11-03 23:45:25 26 4
gpt4 key购买 nike

public static T ParseEnum<T>(string value)
{
return (T) Enum.Parse(typeof (T), value, true);
}

我可以简单地做:

var parsed = EnumUtils.ParseFromString<Gender>("Man");

但有时我得到的枚举类型是字符串。我可以将字符串转换为枚举类型并在我的 EnumUtils 中使用它吗?

我试过:

Type enumType = Type.GetType(Gender,true);
Object o = (Activator.CreateInstance(enumType));

var parsed = EnumUtils.ParseFromString<enumType>("Man");

但不工作。 enumType 无法以通用方式识别。

我也知道这个网站: Converting a string to a class nameHow do I use reflection to call a generic method?

但对我没有帮助,因为我不知道枚举的类型,它并不总是性别,可以是 100 个其他枚举。我知道枚举的名称是字符串而不是类型。

最佳答案

不,你不能使用那样的通用方法。您必须在编译时拥有通用类型。

您无需调用您的 EnumUtils.ParseFromString() 方法。只需直接调用 Enum.Parse()

String typeNameString;
...
Type enumType = Type.GetType(typeNameString,true);
Object parsed = Enum.Parse(enumType, value, true)

关于c# - 当枚举类型也像字符串一样命名时,来自字符串的 ParseEnum,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27733765/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com