首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Enum中使用泛型Tryparse?

如何在Enum中使用泛型Tryparse?
EN

Stack Overflow用户
提问于 2012-05-21 21:04:18
回答 2查看 29.5K关注 0票数 38

我正在尝试构建从用户字符串获取的泛型函数,并尝试将其解析为Enum valuse,如下所示:

代码语言:javascript
运行
复制
private Enum getEnumStringEnumType(Type i_EnumType)
    {
        string userInputString = string.Empty;
        Enum resultInputType;
        bool enumParseResult = false;

        while (!enumParseResult)
        {                
            userInputString = System.Console.ReadLine();
            enumParseResult = Enum.TryParse(userInputString, true, out resultInputType);
        }
    }

但我得到了:

代码语言:javascript
运行
复制
The type 'System.Enum' must be a non-nullable value type in order to use it as parameter 'TEnum' in the generic type or method 'System.Enum.TryParse<TEnum>(string, bool, out TEnum)    .

该错误意味着我需要为resultInputType的特定枚举取消引用?我该如何解决这个问题呢?谢谢。

EN

回答 2

Stack Overflow用户

发布于 2012-05-21 21:08:47

您应该创建一个泛型方法:

代码语言:javascript
运行
复制
private T getEnumStringEnumType<T>() where T : struct, IConvertible
    {
        string userInputString = string.Empty;
        T resultInputType = default(T);
        bool enumParseResult = false;

        while (!enumParseResult)
        {
            userInputString = System.Console.ReadLine();
            enumParseResult = Enum.TryParse<T>(userInputString, out resultInputType);
        }

        return resultInputType;
    }

用法:

代码语言:javascript
运行
复制
public enum myEnum { val1, val2 }

myEnum enumValue = getEnumStringEnumType<myEnum>();
票数 7
EN

Stack Overflow用户

发布于 2019-05-22 15:18:46

字符串扩展方法

代码语言:javascript
运行
复制
public TEnum ToEnum<TEnum>(this string value, TEnum defaultValue){

if (string.IsNullOrEmpty(value))return defaultValue;

return Enum.Parse(typeof(TEnum), value, true);}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10685794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档