反射获取枚举的值错误

meceky 2011-12-13 11:31:51

public static bool ConvertIntToEnumEnable(Type type, int value)
{
try
{
FieldInfo[] fields = type.GetFields();
if (fields == null || fields.Length == 0)
{
return false;
}
foreach (var field in fields)
{
int enumValue = (int)type.InvokeMember(field.Name, BindingFlags.GetField, null, null, null);
if (value == enumValue)
{
return true;
}
}
return false;
}
catch (Exception ex)
{
return false;
}
}

老是报错非静态方法需要一个目标
...全文
54 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
gxingmin 2011-12-13
  • 打赏
  • 举报
回复
优化一下
 public static bool ConvertIntToEnumEnable(Type type, int value)
{
foreach (object val in Enum.GetValues(type))
{
if(Convert.ToInt32(val)==value)
return true;
}
return false;
}
gxingmin 2011-12-13
  • 打赏
  • 举报
回复
反射效率很低,你既然传入的了枚举的Type进来了,就可以获取枚举的值了
 public static bool ConvertIntToEnumEnable(Type type, int value)
{
foreach (object val in Enum.GetValues(type))
{
if(Enum.Format(type,val,"d")==value.ToString())
return true;
}
return false;
}
z_f_p 2011-12-13
  • 打赏
  • 举报
回复
反射,创建一个对象。用对象调用
对象.Invoke(this,null);

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧