0

我目前正在研究一个 VB.Net 通用函数,它吃两个结构并返回一个结构,就像这样......

Public Function MyFunction (Of ThisType As {Structure, MyInterface}) _
                           (ByVal first_param As ThisType, _
                            ByVal second_param As ThisType, _
                            ByVal third_param As Object, _
                            ByVal fourth_param As Object) As ThisType
   ' Do works
End Function

但该函数将在运行时失败,除非third_parameter 和fourth_parameter 也是实现MyInterface 的结构。有没有办法将第三个和第四个参数限制为这种类型的结构(结构有很多可能性;太多而无法为每种可能性创建重载),以便在编译时出现错误?

(我尝试从基础结构派生所有结构,但我现在知道不能这样做。)我可以在使用它们之前检查类型,但这仍然是运行时检查。

4

2 回答 2

1

将这些参数声明为MyInterface而不是Object.

于 2012-08-03T13:30:02.673 回答
1

您可以为泛型函数提供一种以上的类型。只需添加第二个 Type 参数,然后将其约束为您想要与第一个相同的类型。

Public Function MyFunction (Of ThisType As {Structure, MyInterface}, SecondType) _
                           (ByVal first_param As ThisType, _
                            ByVal second_param As ThisType, _
                            ByVal third_param As SecondType, _
                            ByVal fourth_param As SecondType) As ThisType
   ' Do works
End Function
于 2012-08-03T13:44:01.743 回答