5

我有两个功能:

  1. public void DeleteRecord(int id);
  2. public T DeleteRecord<T>(int id);

这是我尝试动态调用泛型方法的方法:

MethodInfo method = typeof(DAL).GetMethod("DeleteRecord", new[] { typeof(int) });
MethodInfo generic = method.MakeGenericMethod(returnType);
object o = generic.Invoke(null, new object[] { dbname, spname, expandoAsDictionary });

第一行抛出异常,因为它找到了一个模棱两可的定义。有没有一种方法可以在不使用和循环查询结果的情况下获得MethodInfo通用方法?GetMethodsIsGenericMethod

编辑:请删除“重复”,因为建议的两个答案要么通过内部循环(GetMethods().Select...)解决此问题,要么甚至不解决重载问题。

4

1 回答 1

0

也许不是您问题的确切解决方案,但也许您会对这个解决方案感到满意:

var generic = typeof(BadFoo).GetMethods().FirstOrDefault(p => p.IsStatic == true && p.Name == "DeleteRecord" && p.ReturnType == typeof(Int32));

我认为该方法会有一个“FullName”,因此GetMethod()可以使用 FullName 调用以获得唯一的方法。但是 Method 中除了 Name 之外没有其他属性。

于 2013-05-28T13:52:11.687 回答