【发布时间】:2018-04-05 20:16:14
【问题描述】:
我有一个接受枚举值作为参数的方法,this answer 是我的参考。但是我似乎无法让它工作。
枚举
Public Enum FieldTypes
db_Alpha = 0
db_Memo = 1
db_Numeric = 2
End Enum
Public Enum SubTypes
st_None = 0
st_Phone = 35
st_Percentage = 37
st_Address = 63
st_Link = 66
End Enum
方法
Public Sub Foo(Of T)(ByVal Param1 As String, ByVal EnumParam As T)
Dim param As Type = GetType(T)
If param.IsEnum Then
Dim x = param.GetEnumValues()
End If
'Running some codes here
End Sub
主要
Public Sub Test()
Foo("TestName",FieldTypes.db_Memo)
End Sub
我正在获取作为参数传递的 Enum 类型的所有值。 我想减少方法重载并在这里了解泛型。接受 C# 和 VB.net 建议。
- 如何获取传递的 Enum 项的值?
- 如何限制这一点,只接受两种类型的 Enum 写入?
【问题讨论】:
-
1) 转换为整数 2) 你不能使用泛型。您可以创建 2 个重载方法。
-
这个问题毫无意义。您从可能必须从System.Enum 派生的参数类型的泛型类型开始。这不是泛型类型的地方;将参数类型设为
System.Enum,然后您就大大限制了可能性。但是,您通过将方法签名限制为仅两种枚举类型的请求来完成这个问题。所有这些都是为了避免为避免所有类型确定代码并为您提供强大智能支持的方法编写两个重载。 -
@TnTinMn 是通用但限制 2 个输入,感谢您对此的见解。不过我还在研究这个。