2012-08-03 83 views
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的结构。有什么办法可以将第三个和第四个参数限制为这种类型的结构(对于结构来说有很多可能性;对于每种可能性来说,有太多的可能会造成重载),所以在编译时会出现错误?我试着从基础结构中派生出所有的结构,但是现在我知道不能这样做。)在使用它们之前,我可以检查它们的类型,但这仍然是运行时检查。

回答

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 
1

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