我有许多MethodBase实例引用不同的开放通用方法(expected),例如代表以下方法:
T Foo<T>(T nevermind, T other);
T Foo<T>(string nevermind, T other);
我有一个MethodBase引用封闭方法的单个实例,该方法实际上被称为 ( actual),例如:
int Foo<int>(string nevermind, int other);
我如何以编程方式检查actual封闭方法是否可以匹配任何给定的expected开放方法,尤其是在考虑所有泛型陷阱和复杂性时?
具体来说,我想确定给定封闭方法的expected列表中的正确项目是而不是第二个。actualT Foo<T>(string nevermind, T other);
此外,对于MethodBase对应于 double Foo<double>(double something, string other)我希望没有匹配的结果。
遍历候选方法并检查每个参数expected是否可以从相应actual参数分配是一种好方法吗?如果是这样,这是最简单的方法吗?我是否需要考虑任何特殊情况以不匹配不会根据 .NET 中的方法重载解析规则选择的方法?