hm.NET.dllの不具合?No.00614
fzok4234 さん 20/09/25 01:37
 
こみやんま氏のhm.NET v1.701で、同一クラス内で名前が同じで引数が異なるメソッ
ドを呼び出すことができません。

呼び出されるC#のDLLは次のようになります。
//----------------Overload.dll----------------
public static class Overload {
    public static System.IntPtr Method( System.IntPtr a ) {
        return a;
    }
    public static System.IntPtr Method( System.IntPtr a, System.IntPtr b ) {
        return a;
    }
}
//--------------------------------------------

呼び出す側の秀丸マクロは次のようになります。
//----------------Overload.mac----------------
debuginfo 1;
#hmDotNet = loaddll( currentmacrodirectory + @"\hm.NET.dll" );
$dllPath = currentmacrodirectory + @"\Overload.dll";
$className = @"Overload";
debuginfo str( dllfuncw( #hmDotNet, @"CallMethod", $dllPath, $className, @"M
ethod", 1 ) ) + "\U0000000A";
debuginfo str( dllfuncw( #hmDotNet, @"CallMethod", $dllPath, $className, @"M
ethod", 2, 3 ) ) + "\U0000000A";
endmacro;
//--------------------------------------------

これを実行すると、デバッガーに以下のように表示されてしまいます(フォルダー名
は伏せています)。

指定のアセンブリやメソッドを特定する前に、例外が発生しました。
アセンブリパス   :c:\********\Overload.dll
名前空間.クラス名:Overload
メソッド名       :Method
System.Reflection.AmbiguousMatchException
あいまいな一致が見つかりました。
   場所 System.RuntimeType.GetMethodImpl(String name, BindingFlags bindingAt
tr, Binder binder, CallingConventions callConv, Type[] types, ParameterModif
ier[] modifiers)
   場所 System.Type.GetMethod(String name)
   場所 SubCallMethod(String assm_path, String class_name, String method_nam
e, List`1 args, Boolean isDetathFuncMode)
0
指定のアセンブリやメソッドを特定する前に、例外が発生しました。
アセンブリパス   :c:\********\Overload.dll
名前空間.クラス名:Overload
メソッド名       :Method
System.Reflection.AmbiguousMatchException
あいまいな一致が見つかりました。
   場所 System.RuntimeType.GetMethodImpl(String name, BindingFlags bindingAt
tr, Binder binder, CallingConventions callConv, Type[] types, ParameterModif
ier[] modifiers)
   場所 System.Type.GetMethod(String name)
   場所 SubCallMethod(String assm_path, String class_name, String method_nam
e, List`1 args, Boolean isDetathFuncMode)
0


[ ]
RE:00614 hm.NET.dllの不具合?No.00615
vscode-life さん 20/12/17 16:37
 
お返事が大変おくれました。 こみやんまです
(この掲示板で表示される私のハンドルが違うかも)

こちらバグというわけではなく、単純にオーバーロードには対応していないというも
のでしたが、対応版をv1.711 としてサイトにアップしました。

(別の会議室ではなにやら、物議をかもしだしていたようで…)

[ ]