泛型函数返回枚举值

时间:2010-12-02 18:28:02

标签: .net enums

我有三个不同的枚举,三个都有相同的标识符,但值不同。我想根据某些条件访问特定的枚举。

例如:

Public Enum Type1
     Font = 10
     Color = 11 
End Enum

Public Enum Type2
     Font = 20
     Color = 21
End Enum

Public Enum Type3
     Font = 30
     Color = 31
End Enum

根据某些条件,我需要访问特定的枚举。例如,

if(somecondition = 1) 
    return Type1.Font
else if (somecondition = 2)
    return Type2.Font
else if (somecondition = 3)
    return Type3.Font

我需要重复相同的逻辑来访问其他枚举标识符。有什么方法可以编写返回枚举值的泛型方法吗?

例如,

public function GetEnumValue(enumtype, identifier) as integer

  return enumtype.identifier 

end function

有没有办法写上面的泛型函数来返回枚举值?

更新:我正在寻找像GetEnumValue(Type1,Font)这样的方法,它返回整数的枚举值(在本例中为type1.font为10)

2 个答案:

答案 0 :(得分:3)

IMO你在滥用枚举。你应该有一个enum

  • 带开关的三个功能
  • 从你的枚举到int的三个词典
  • 使用所需值的属性装饰枚举中的每个条目。

您的问题可以通过Enum.Parse

解决

答案 1 :(得分:1)

您的问题非常不清楚。

您可能正在寻找

return Enum.Parse(enumType, valueName);

其中enumTypeType个对象,valueName是字符串。