通过反射调用泛型方法引导错误

时间:2012-06-01 06:56:45

标签: entity-framework reflection

我有一个扩展方法如下。

 public static class ExtensionMethod
{
    public static string GetTableName<T>(this ObjectContext context) where T : class
    {
        //Content
    }
}

我调用此方法如下。

static void Main(string[] args)
    {
        using (BreakAwayEntities context = new BreakAwayEntities())
        {
            Customer cus = context.Customers.First();

            ObjectStateEntry entry = context.ObjectStateManager.GetObjectStateEntry(cus);
            Type t = entry.Entity.GetType();               
            MethodInfo method = typeof(ExtensionMethod).GetMethod("GetTableName");
            MethodInfo genericMethod = method.MakeGenericMethod(t);
            genericMethod.Invoke(null, null);         
        }
    }    

但是在代码的最后一行“genericMethod.Invoke(null,null)”会引发异常“参数计数不匹配”。 有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

GetTableName方法有一个参数,但是你正在调用Invoke,第二个参数为null,表示不应该传递任何参数。您需要将ObjectContext作为第二个参数传递:

genericMethod.Invoke(null, new object[] { context });