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)」は例外「パラメータ数の不一致」をスローします。誰でも助けることができますか?

4

1 に答える 1

0

GetTableNameメソッドには1つのパラメーターがありますが、Invokeを呼び出すと、パラメーターが渡されないことを示すnullの2番目の引数が返されます。ObjectContextを2番目のパラメーターとして渡す必要があります。

genericMethod.Invoke(null, new object[] { context });
于 2012-06-01T15:47:29.487 に答える