2012-06-01 67 views
0

我有一個擴展方法如下。通過反射調用通用方法導致錯誤

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)」拋出一個異常「參數數量不匹配。」 任何人都可以提供幫助嗎?

回答

0

GetTableName方法有一個參數,但您調用Invoke會有第二個參數爲null,表示不應傳遞任何參數。您需要傳遞ObjectContext作爲第二個參數:

genericMethod.Invoke(null, new object[] { context }); 
相關問題