C# 泛型类型参数,泛型枚举返回类型
我有一个通用返回类型的函数。如果value参数是有效的枚举值,则该方法返回相关的枚举值 如何返回相关的枚举值?编译器错误:无法将类型“int”转换为“T”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
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;
}