.NET6 Type t = typeof(double).GetMethod("TryParse").GetParameters()[1].ParameterType;

Console.WriteLine(t.Name);报错System.Reflection.AmbiguousMatchException:“Ambiguous match found.”

这个错误通常是因为在使用反射时存在方法重载,导致无法确定要获取哪个重载方法的参数信息。在这个特定的例子中,.GetMethod("TryParse") 可能匹配到多个重载版本的 TryParse 方法。

double.TryParse 方法有多个重载,每个重载版本的参数个数和类型都可能不同,这就导致了上述代码中的歧义性匹配。要解决这个问题,你可以通过获取特定版本的 TryParse 方法,或者通过进一步精确指定方法的参数类型来避免歧义性匹配。

以下是两种可能的解决方法:

方法1:获取特定版本的 TryParse 方法

可以通过指定参数类型来获取特定版本的 TryParse 方法,避免歧义性匹配。例如,假设你想要获取接受 string 和 out double 参数的 TryParse 方法,可以这样做:

Type[] parameterTypes = { typeof(string), typeof(double).MakeByRefType() };
MethodInfo tryParseMethod = typeof(double).GetMethod("TryParse", parameterTypes); if (tryParseMethod != null)
{
Type t = tryParseMethod.GetParameters()[1].ParameterType;
Console.WriteLine(t.Name); // 输出 "Double&"
}
else
{
Console.WriteLine("Method not found.");
}

方法2:获取所有 TryParse 方法并进一步处理

你也可以获取所有重载版本的 TryParse 方法,然后根据参数的个数和类型来进一步处理。以下是一个示例代码,展示如何获取所有 TryParse 方法并输出其参数类型:

MethodInfo[] tryParseMethods = typeof(double).GetMethods()
.Where(method => method.Name == "TryParse")
.ToArray(); foreach (MethodInfo method in tryParseMethods)
{
ParameterInfo[] parameters = method.GetParameters();
if (parameters.Length == 2)
{
Type t = parameters[1].ParameterType;
Console.WriteLine($"{method.Name}({parameters[0].ParameterType.Name}, {t.Name})");
}
}

这将输出所有符合参数个数为 2 的 TryParse 方法及其参数类型。根据实际需求,你可以进一步筛选和处理这些方法。

C#反射报错之System.Reflection.AmbiguousMatchException:“Ambiguous match found.的更多相关文章

  1. “System.Reflection.AmbiguousMatchException”类型的异常在 mscorlib.dll 中发生

    错误提示: “System.Reflection.AmbiguousMatchException”类型的异常在 mscorlib.dll 中发生,但未在用户代码中进行处理. 发现不明确的匹配. 问题原 ...

  2. 报错:System.NotSupportedException: LINQ to Entities does not recognize the method

    报错:System.NotSupportedException: LINQ to Entities does not recognize the method ...... get_Item(Int3 ...

  3. 报错:System.Data.Entity.Validation.DbEntityValidationException: 对一个或多个实体的验证失败

    使用MVC和EF,在保存数据的时候报错:System.Data.Entity.Validation.DbEntityValidationException: 对一个或多个实体的验证失败.有关详细信息, ...

  4. docker运行报错docker0: iptables: No chain/target/match by that name.

    转自:https://blog.csdn.net/wohaqiyi/article/details/84450562 docker运行报错docker0: iptables: No chain/tar ...

  5. C# 基于密码的身份验证报错问题System.Net.NetworkCredential

    今天碰到个很奇怪的问题,在用下面这段代码调试时获取身份验证时居然报错,更奇怪的是本地VS中调试正常而在虚机上调试就报错了 ClientCredentials clientCredentials = n ...

  6. 反射报错java.lang.IllegalArgumentException: wrong number of arguments

    class Person{ private String name ; private String sex ; public Person(){ System.out.println("c ...

  7. java 反射 报错:Attempt to get java.lang.Integer field "..." with illegal data type conversion to int

    类: Integer id; 反射时: Field f = User.class.getDeclaredField("id"); f.setAccessible(true); in ...

  8. ASP.NET MVC 认证模块报错:“System.Configuration.Provider.ProviderException: 未启用角色管理器功能“

    新建MVC4项目的时候 选 Internet 应用程序的话,出来的示例项目就自带了默认的登录认证等功能.如果选空或者基本,就没有. 如果没有,现在又想加进去,怎么办呢? 抄啊.将示例项目的代码原原本本 ...

  9. .Net 连接FTP下载文件报错:System.InvalidOperationException: The requested FTP command is not supported when using HTTP proxy

    系统环境: Windows + .Net Framework 4.0   问题描述: C#连接FTP下载文件时,在部分电脑上有异常报错,在一部分电脑上是正常的:异常报错的信息:System.Inval ...

  10. Ubuntu系统报错The system is running in low-graphics mode

    Ubuntu系统报错:The system is running in low-graphics mode 我遇到过两次这种请况,这次解决了.很nice! 在csdn上搜到的大部分操作是: 鼠标进入系 ...

随机推荐

  1. Flume - [04] Hive Sink

    一.概述   HIVE Sink 将包含分割文本或JSON数据的事件直接流到Hive表或分区中.事件是使用Hive事务编写的.一旦一组事件被提交到Hive,它们就会立即对hive查询可见.流到其中的分 ...

  2. swoole(5)信号监听、热重启

    一:信号监听 信号:由用户.系统或者进程发给目标进程的信息,以通知目标进程某个状态的改变或系统异常 信号查看:kill -l SIGHUP     终止进程     终端线路挂断 SIGINT     ...

  3. Golang 入门 : Go语言介绍

    简介 Go 语言又称 Golang,由 Google 公司于 2009 年发布,近几年伴随着云计算.微服务.分布式的发展而迅速崛起,跻身主流编程语言之列,和 Java 类似,它是一门静态的.强类型的. ...

  4. 同一局域网下,远程连接另一台电脑的Mysql数据库

    博客地址:https://www.cnblogs.com/zylyehuo/ 参考链接 同一局域网,远程连接别人的Mysql数据库 用电脑A去远程电脑B的数据库,那我们要先在电脑B上设置一下: ste ...

  5. 什么是集群&集群的分类

    集群(Cluster)    计算机集群简称集群,是一种计算机系统,它通过一组松散集成的计算机软件(和/或)硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中 ...

  6. CSAPP学习笔记——chapter9 虚拟内存

    CSAPP学习笔记--chapter9 虚拟内存 虚拟内存提供三个重要的功能.第一,它在主存中自动缓存最近使用的存放磁盘上的虚拟地址空间的内容.虚拟内存缓存中的块叫做页.对磁盘上页的引用会触发缺页,缺 ...

  7. 【Linux】5.3 Shell字符串

    Shell 字符串 字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号.单双引号的区别跟PHP类似. 1. 单 ...

  8. 【EasyPR】Linux安装使用EasyPR开源车牌识别系统

    [EasyPR]Linux安装使用EasyPR开源车牌识别系统 零.安装OpenCV - 3.2.0 我使用的是Kali系统,基于Debian的一个Linux发行版本. 1.配置系统的软件源(配置正确 ...

  9. BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource

    在练习中遇到的,我的情况是: 打算在common中建立student实体类,想到可能其他模块也会用到这个类,但是一些注解比如,@TableId等等需要用到mybatis-plus的依赖,所以我就把依赖 ...

  10. Linux下安装node及npm

    Linux下安装node 1.解压 $ tar zxf node-v8.9.0-linux-x64.tar.gz 2.移动到指定目录 $ mv node-v8.9.0-linux-x64 /usr/l ...