C# 泛型类型参数,泛型枚举返回类型

C# 泛型类型参数,泛型枚举返回类型,c#,generics,C#,Generics,我有一个通用返回类型的函数。如果value参数是有效的枚举值,则该方法返回相关的枚举值 如何返回相关的枚举值?编译器错误:无法将类型“int”转换为“T” public static T? GetEnumValue<T>(int? value) { if (value == null) { return null; } try { var enumValues = Enum.GetValues(typeof(T

我有一个通用返回类型的函数。如果value参数是有效的枚举值,则该方法返回相关的枚举值

如何返回相关的枚举值?编译器错误:无法将类型“int”转换为“T”

public static T? GetEnumValue<T>(int? value)
{
    if (value == null)
    {
        return null;
    }

    try
    {
        var enumValues = Enum.GetValues(typeof(T));

        foreach (object enumValue in enumValues)
        {
            if (Convert.ToInt32(enumValue).Equals(value))
            {
                // ERROR: Cannot convert type 'int?' to 'T'
                return (T)value;
            }
        }
    }
    catch (ArgumentNullException)
    {
    }
    catch (ArgumentException)
    {
    }
    catch
    {
    }

    return null;
}
publicstatict?GetEnumValue(int?值)
{
如果(值==null)
{
返回null;
}
尝试
{
var enumValues=Enum.GetValues(typeof(T));
foreach(枚举值中的对象枚举值)
{
if(转换为32(枚举值).Equals(值))
{
//错误:无法将类型“int”转换为“T”
返回(T)值;
}
}
}
捕获(异常)
{
}
捕获(异常)
{
}
抓住
{
}
返回null;
}

谢谢,

使用方法,而不是使用
Convert
类。

三个更改使它适合我。将返回类型更改为NulLabor并添加到T:Stutt(截取)中,并将中间返回到返回枚举值。

    public static Nullable<T> GetEnumValue<T>(int? value) 
        where T : struct
    {
        if (value == null)
        {
            return null;
        }

        try
        {
            var enumValues = Enum.GetValues(typeof(T));

            foreach (object enumValue in enumValues)
            {
                if (Convert.ToInt32(enumValue).Equals(value))
                {
                    return (T)enumValue;
                }
            }
        }
        catch (ArgumentNullException)
        {
        }
        catch (ArgumentException)
        {
        }
        catch
        {
        }

        return null;
    }
public静态可空GetEnumValue(int?值)
其中T:struct
{
如果(值==null)
{
返回null;
}
尝试
{
var enumValues=Enum.GetValues(typeof(T));
foreach(枚举值中的对象枚举值)
{
if(转换为32(枚举值).Equals(值))
{
返回(T)枚举值;
}
}
}
捕获(异常)
{
}
捕获(异常)
{
}
抓住
{
}
返回null;
}