0

私は現在、2つの構造体を食べて構造体を返す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を実装する構造体でない限り、関数は実行時に失敗します。3番目と4番目のパラメーターをそのようなタイプの構造に制限する方法はありますか(構造には多くの可能性があり、それぞれの可能性に対してオーバーロードを作成するには多すぎます)、コンパイル時にエラーが表示されますか?

(基本構造からすべての構造を導出しようとしましたが、今ではそれができないことがわかっています。)使用する前に型を確認できますが、それでも実行時の確認です。

4

2 に答える 2

1

MyInterfaceこれらのパラメータをの代わりに宣言しますObject

于 2012-08-03T13:30:02.673 に答える
1

ジェネリック関数に複数のタイプを与えることができます。2番目の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 に答える