C#反射调用 异常信息:Ambiguous match found.
时间: 2023-11-28 21:50:49 浏览: 147
当使用反射调用一个方法时,如果有多个方法名称和参数类型完全相同,就会出现该异常信息。这种情况下,反射无法确定要调用的确切方法。
解决方法:
1. 使用方法的完全限定名来调用方法,例如:`Type.GetMethod("MethodName", new Type[] { typeof(ParameterType1), typeof(ParameterType2) });`
2. 如果有多个方法名称和参数类型完全相同,则可以使用参数数量来区分它们。例如,如果有两个名称为"MethodName"的方法,一个有两个参数,另一个有三个参数,则可以使用以下代码来调用方法:
```
Type.GetMethod("MethodName", new Type[] { typeof(ParameterType1), typeof(ParameterType2) });
Type.GetMethod("MethodName", new Type[] { typeof(ParameterType1), typeof(ParameterType2), typeof(ParameterType3) });
```
3. 如果以上两种方法都无法解决问题,可以考虑修改方法名称或参数类型,以便它们不再完全相同。
相关问题
form_para.cpp:336:30: Call to member function 'arg' is ambiguous qstring.h:313:31: candidate function qstring.h:315:31: candidate function qstring.h:1111:25: candidate function qstring.h:1113:25: candidate function qstring.h:1115:25: candidate function qstring.h:1117:25: candidate function qstring.h:1119:25: candidate function qstring.h:1121:25: candidate function
这个错误提示是因为在调用`arg()`函数时,编译器无法确定应该调用哪个函数。在QT中,`arg()`函数有多个重载形式,如果在调用时没有传递足够的参数信息,编译器就无法确定应该调用哪个函数。
为了解决这个问题,可以显式地指定要调用的`arg()`函数的重载形式,如下所示:
```cpp
int num = -255; // 负数
QString hex_str;
if (num >= 0) {
hex_str = QString("%1").arg(num, 8, 16, QChar('0'));
} else {
hex_str = QString("%1").arg(((1 << 32) - 1) ^ ((-num - 1) << 1) | 1, 8, 16, QChar('0'));
}
qDebug() << hex_str;
```
在调用`arg()`函数时,将要调用的重载形式显式地指定为`arg(int, int, int, QChar)`,这样编译器就能够确定要调用哪个函数了。
Caused by: java.lang.IllegalStateException: Ambiguous mapping. Cannot map 'wipOnCheckController' method
回答: 错误提示"Caused by: java.lang.IllegalStateException: Ambiguous mapping. Cannot map 'wipOnCheckController' method"表示在映射路径上存在冲突,即存在多个方法映射到相同的路径上。\[1\]\[2\]解决这个问题的方法是在RequestMapping注解上添加一个额外的路径,以区分不同的方法。例如,可以在DeleteMapping注解上添加一个路径,如@DeleteMapping("/delete/{uid}"),这样就可以解决冲突并正确映射方法。\[3\]
#### 引用[.reference_title]
- *1* [Caused by: java.lang.IllegalStateException: Ambiguous mapping. Cannot map ‘sellerController‘ ...](https://blog.csdn.net/m0_66487543/article/details/123374498)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* *3* [Caused by: java.lang.IllegalStateException: Ambiguous mapping. Cannot map ‘userController‘ method ...](https://blog.csdn.net/weixin_55229531/article/details/124828048)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文