2012-06-01 3 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 }); 
Смежные вопросы