[OS]XP/Vista
[VB]2008
度々お世話になっております
ジェネリックで型パラメータにStructure制約をつけ
値型のみ許可するようにしているメソッドがあります。
このメソッドは、ジェネリックではないオーバーロードされたメソッドも存在します
例:
Public Function Test(Of T As Structure)(ByVal src As T) As T
'なんか処理
End Function
Public Function Test(ByVal src As String) As String
'なんか処理
End Function
この状態で、呼び出し元で型パラメータに
'未初期化は警告として出る
Dim f1 As IO.StreamReader
Dim f2 As IO.StreamReader
f2 = Test(Of IO.StreamReader)(f1)
のように、Stringやその他クラス等、参照型を指定してもコンパイルエラーにも警告にもなりません。
しかし、呼び出し行に置いたブレイクポイントが実行時に次行に避けたり
そもそもブレイクポイント置けない場合もあったり…
実行ステップも、該当行を避けています。
型パラメータ指定が間違っているにも拘らず、実行時エラーが出ないどころか
スルーしつつ継続してしまうのはバグの原因になると思ったのですが、
コンパイルエラーとする設定方法がわかっておりません。
プロジェクトプロパティ内の「警告の構成」では、
暗黙型変換.../遅延バインディング.../暗黙的な型... の3つを エラー とし、
その他はすべて 警告 としています。
何か情報があればご提供お願いいたします