投稿者 魔界の仮面弁士  (社会人) 投稿日時 2023/1/13 11:07:59
今のところ、現象を再現させられるパターンを見つけ出せずにいます。

機微情報を取り除いて、必要最小限の実験コードにまで縮小した
サンプルコードを提示してもらえると追跡しやすいのですけれど、難しいですかね。

> ⇒◎これでなら動きました!
名前空間を明示すると動くのであれば、オーバーロードというよりは、
名前空間の異なる同名モジュールがあるパターンでしょうか…。
(あるいは拡張メソッドが別の DLL で提供されていた可能性もある?)

プロジェクトのプロパティの[参照設定]タブ内にある「インポートされた名前空間」あるいは
.vb ファイル先頭に書かれる Imports 宣言によって、.NET の標準ではない
自作コードの名前空間が追加されていたりはしますか?


さきほどの修正で
 = Global.ルート名前空間名.DatatableExtensions.MinimumLackedNumber(dtBook, "bookCode")
とすることで呼べるようになったコードを
 = Global.ルート名前空間名.MinimumLackedNumber(dtBook, "bookCode") 'モジュール名省略
 = DatatableExtensions.MinimumLackedNumber(dtBook, "bookCode") 'ルート名前空間省略
 = MinimumLackedNumber(dtBook, "bookCode") 'メソッド名のみ
に変えてみてください。この中に呼べなくなるパターンはありますか?


> 他にもう1つ、DataTableの拡張メソッドがあり、同様のエラーが出ていますが、省略しました。
そのエラーが、結果的に他のエラーを誘発する要因になっていた可能性も無いとは言えず。

Public Module DatatableExtensions を見てみると、
Public Function MinimumLackedNumber において
 Dim max = MaxNumber(dt, column)
という呼び出しが行われていますが、これを
 Dim max = dt.MaxNumber(column)
の拡張メソッド構文で呼び出すことはできるのでしょうか。
それとも、拡張メソッド構文だと、ここも BC30521 になってしまいますか?