C# 反射 方法 带参数是(委托型)求 高人解答

C# 反射 方法 带参数是(委托型)

方法 (委托 )

委托1= 委托

object[] obj= new object [] { Messagecallback};//Messagecallback() 是写的一个方法 与委托 定义参数一样
return t.InvokeMember(name, BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.Static, null, null, obj);

提示错误信息:
Error 5 Cannot convert method group 'MessageCallBack' to non-delegate type 'object'. Did you intend to invoke the method?

namespace AppModels
{
public class p_number
{
public int first_number { get; set; }
public int next_number { get; set; }
public int last_number { get; set; }
}
}
namespace AppModels_Calculate
{
public class Calculate
{
public string message { get; set; }
public int Add(AppModels.p_number p)
{
message = "无委托的方法";
return p.first_number + p.next_number + p.last_number;
}
public int Add(AppModels.p_number p, Func p2)
{
message = "带委托的方法";
var p_add = p.first_number + p.next_number + p.last_number;
var p2_add = p2(p_add);
return p2_add;
}
}
}

private void button3_Click(object sender, EventArgs e)
        {
            AppModels.p_number pv = new AppModels.p_number() { first_number = 15, last_number = 35, next_number = 25 };
            var ass = System.Reflection.Assembly.Load("AppModels_Calculate");//加载程序集
            Type ass_tp = ass.GetType("AppModels_Calculate.Calculate");//类名
            var ass_obj = Activator.CreateInstance(ass_tp);//实例化
            var methodnames = ass_tp.GetMethods();//获取方法集合
            var methodname1 = "Int32 Add(AppModels.p_number, System.Func`2[System.Int32,System.Int32])";//带func的方法
            var methodname2 = "Int32 Add(AppModels.p_number)";//不带func的方法
            object[] objparams1 = { pv, (Func<int, int>)(calcu_add) };
            object[] objparams2 = { pv};
            object result1 , result2, result3, result4;
            foreach (var item in methodnames)
            {
                if (item.ToString() == methodname1)
                {////带func的方法
                    System.Reflection.MethodInfo method = item;
                    result1 = method.Invoke(ass_obj, objparams1);
                    result3 = ass_tp.GetProperty("message").GetValue(ass_obj, null);
                }
                if (item.ToString() == methodname2)
                {////不带func的方法
                    System.Reflection.MethodInfo method = item;
                    result2 = method.Invoke(ass_obj, objparams2);
                    result4 = ass_tp.GetProperty("message").GetValue(ass_obj, null);
                }
            }
        }
        public int calcu_add(int m) 
        {
            return m + 1006;
        }