当调用方法时,选择哪个委托适合它

时间:2017-02-24 13:46:37

标签: delegates castle-dynamicproxy

这是检查哪个委托应该绑定到哪个方法的函数: Description is here

private static bool IsEquivalent(Delegate d, MethodInfo method)
 {
  var dm = d.Method;
  if (!method.ReturnType.IsAssignableFrom(dm.ReturnType))
      return false;
  var parameters = method.GetParameters();
  var dp = dm.GetParameters();
  if (parameters.Length != dp.Length)
      return false;
  for (int i = 0; i < parameters.Length; i++)
  {
      //BUG: does not take into account modifiers (like out, ref...)
      if (!parameters[i].ParameterType.IsAssignableFrom(dp[i].ParameterType))
          return false;
  }
  return true;

}

这里检查方法返回类型和方法参数类型是否与委托指向的函数相同。 但是如果有多个具有相同参数类型的函数呢? 那个案子我们怎么处理? 是否可以读取某些委托指向它的函数名称?

1 个答案:

答案 0 :(得分:0)

代表实际上没有name属性。我在我的项目中采用这个代码的更好方法是让类包含传递的委托作为其方法。通过这种方式,您可以传递该类的实例而不是所有这些委托参数,并将类方法的名称与调用方法名称进行比较。