1

关于如何为泛型类型创建枚举约束有很多问题。ex1 , ex2 , ex3

我很好奇是否有可能更进一步,只需要某些本地定义的枚举作为通用方法的约束。

目前,我正在使用建议的解决方案,即在泛型类型上使用结构、Iconvertible 约束来处理允许泛型类型的枚举。在 vb.net 中看起来像这样:

Private Function MyMethod(Of T As {Structure, IConvertible})(ByVal myEnum As T) As Object
     '...
End Function

现在,如果我想进一步将约束强制限制在我的两个枚举中会发生什么,定义如下:

Public Enum EnumOne
    Height
End Enum

Public Enum EnumTwo
    Width
End Enum

我还没有弄清楚语法。

虽然我在 VB.net 中编程,但也欢迎 C# 答案。

4

1 回答 1

1

不,你不能像那样约束类型参数,这些枚举类型没有任何共同点。只能处理两种类型参数类型的泛型函数没有太多价值,只提供函数的两个非泛型重载要简单得多:

Private Function MyMethod(ByVal value as EnumOne) As Object
     '' etc
End Function

Private Function MyMethod(ByVal value as EnumTwo) As Object
     '' etc
End Function

可能还有另一种私有方法,为这些功能提供通用实现。

于 2013-04-02T17:59:31.407 回答