|
こみやんま氏の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
|
|