VB.NET,INFER ON和Enum.GetValues

时间:2013-02-12 16:16:03

标签: .net vb.net reflection enumeration type-inference

我的项目经理指控我从我们的解决方案中删除所有“Option Infer On”指令(在他看来,为了没有未定义的类型)。

Dim enums = [Enum].GetValues(enumType) ' here I will use "As Array" 

For Each item In enums ' <================== WHAT TYPE TO USE HERE?
  Dim ienum As [Enum] = CType(item, [Enum])

  Dim name As String
  Dim caption As String

  name = ienum.GetPropertyName
  caption = ienum.GetStringValue

  myDict.Add(caption, name)
Next item

2 个答案:

答案 0 :(得分:1)

GetValues的返回类型是一个对象数组。因此For Each循环中“item”变量的类型将是Object。

希望有所帮助。

答案 1 :(得分:1)

根据MSDN,它是一个常量数组,因此它可以是一个可以转换为Integer的对象数组。

FWIW我有一些代码可以完成类似的工作,它会根据每个Enum值获取存储的属性。为此,我使用了GetNames,然后反映回支持Enum字段,我可以搜索自定义属性,存储各种元数据位,例如“DisplayName”等。然后可以使用{重构Enum {1}}。

希望有所帮助!此外,我认为必须更改所有代码是一个愚蠢的想法,因为您的经理不信任语言/开发人员!