2012-08-03 81 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