创建涉及多个类或结构的泛型函数

时间:2012-08-03 13:27:54

标签: vb.net

我目前正在开发一个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的结构。有没有办法将第三个和第四个参数限制为这种类型的结构(结构有很多可能性;为每种可能性创建过多的过多),以便在编译时出现错误?

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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