none
如果由于目标方法参数太多,用不了GetActionType 或 GetFuncType 怎么办? RRS feed

  • 问题

  • private static Type GetMethodDelegateType(object testClass, string methodName)
        {
          var mi = testClass.GetType().GetMethod(methodName);
          var typeArgs = mi.GetParameters().Select(p => p.ParameterType).ToList();      
    
          // builds a delegate type 
          if (mi.ReturnType == typeof(void))
          {
            
            return System.Linq.Expressions.Expression.GetActionType(typeArgs.ToArray());        
          }
          typeArgs.Add(mi.ReturnType);
          
          return System.Linq.Expressions.Expression.GetFuncType(typeArgs.ToArray());
        }
    

    当我的目标方法参数多于 GetActionType 的4个 就会报异常, functype 同样

    如果把typeArgs直接转成Type,运行也会报错 说是 类型 不符合 delegate type

    这该怎么办呢 ?

    2010年10月29日 6:37

答案

全部回复

  • 接上面 ,用 Delegate.CreateDelegate(Type, Method, bool ) 来建立委托, 这个 Type 该怎么获得,

    我没有现成的 delegate 去 typeof 。

    除了像上面的代码去目标方法里取出再用GetActionType或GetFuncType封装,还有别的方法吗?

    先在此多谢大家了!

    2010年10月29日 7:33
  • 受到 Dynamic Language Runtime 的启发, 定制了支持多参数的 Action 和 Function 

    问题解决了。

    2010年11月1日 6:47
  • 第一次来msdn提问题,没人回答。挺郁闷

    高手们都来看看就走了 也不留些痕迹 可能是问题太简单了

    还是说用英文提问 会解决的快些?

    2010年11月1日 9:10